为什么我的Serat of Eratosthenes算法实现会进入无限循环?

sbk*_*sbk 1 algorithm loops sieve sieve-of-eratosthenes

我正在实现Sieve算法,用于查找最多为n的素数.我无法找出为什么它会进入无限循环.

在这里,我给出了代码片段.请帮忙.

for(int j=2;j<=Math.sqrt(n);j++){
  if(a[j]==true){
     int x=0;
     for(int p=(j*j+x*j); p<=n;x++){
        a[p]=true;
     }
  }
}   
Run Code Online (Sandbox Code Playgroud)

Cal*_*eth 5

你的内循环正在检查p但从不改变它