求问用筛选法求100以内的素数里,i进入了if(i==j)后还是等于素数的,但是再往下进入内循环for后就一直等于2是为什么


求问用筛选法求100以内的素数里,i进入了if(i==j)后还是等于素数的,但是再往下进入内循环for后就一直等于2是为什么


确实是因为没有重置b的值导致进入不了循环。
#include <stdio.h>
int main(void){
int a[101],i,j,k,b;
for(i=1;i<101;i++){
a[i]=i;
}
a[1]=0;
for(i=2;i<101;i++){
for(j=2;j<=i;j++){
if(i%j==0){
break;
}
}
// printf("after for i=%d\n",i);
if(i==j){
// printf("i=%d,",i);
b=2*i;
//printf("i=%d,b=%d\n",i,b);
for(k=2;b<=100;k++){
//printf("i=%d,b=%d\n",i,b);
printf("%d ",i);
a[b]=0;
b=k*i;
}
}
}
for(i=2;i<=100;i++){
if(a[i]!=0){
printf("%d ",a[i]);
}
}
return 0;
}
