因为判断2时,不会进入第16行那个for循环,因为2<2这个for循环条件不满足,所以不会进入for循环内,然后2就被判断为素数(可以在此for循环内打印每一次a[i]的数值观察下)。
然后根据定义,2是素数。
测试代码如下:
参考链接:
#include <stdio.h>
int main(void){
int a[10];
float sum;
int i,j,k,b=0;
for(k=0;k<10;k++){
scanf("%d",&a[k]);
}
for(i=0;i<10;i++){
int flag=0; //素数标志,默认0表示是素数
if(a[i]<2){
flag=1;
}
for(j=2;j<a[i];j++){ // 当a[i]等于2时,这个for循环不会进入循环, 所以2被判断为是素数
// if(j==2){
// printf("a[%d]=%d\n",i,a[i]);
// }
sum=a[i]%j;
if(sum==0){
flag=1;
break;
}
}
if(!flag){
b++;
// printf("%d: a[%d]=%d\n",b,i,a[i]);
}
}
printf("%d",b);
return 0;
}
因为你i初始时是2,2不小于a [i]。进不了循环