/* 输出前50个素数(嵌套循环)*/#include <stdio.h>int main(){ int x; int cnt = 0; //for (x=1; cnt<50; x++){ x = 1; while (cnt < 50) { int i; int isPrime = 1; for (i = 2; i < x; i++) { if (x % i == 0) { isPrime = 0; break; } } if (isPrime == 1) { cnt++; printf("%d\t", x); if (cnt % 5 == 0) { printf("\n"); } x++; } } return 0;}
有两个错误:
1)x = 2; 不然1都判断成了素数。另外,判断素数那里效率太低,你找个求素数代码比较一下。比如素数11,当判断到4仍未找到约数,就不需要找下去了
2)x++的位置应放于if (isPrime == 1)判断之后。
语句x++应放在if(isprime==1)的复合语句块之外
另外x应从2开始计数