素数指在大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数)。比1大但不是素数的数称为合数。1和0既非素数也非合数。素数在数论中有着非常重要的地位。
问题:输出1~n之间的所有素数,每行一个。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main(int argc, char *argv[]) { int i,j, flag; i=49; flag=1; // 先假定i是素数 for (j=2; j<i; j++) if (i%j==0) { flag=0; // 如果 i 能够被 j 整除,就不是素数 break; // 找到一个就可以结束循环了 } if (flag==1) printf("%d\n", i); // 如果是素数,则输出 return 0; } |
你可以将 i 改成 41,看看输出是什么?
如果i从2遍历到n,就可以输出所有的素数了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> int main(int argc, char *argv[]) { int i,j,flag,n; scanf("%d", &n); for (i=2; i<=n; i++) { flag=1; for (j=2; j<i; j++) if (i%j==0) { flag=0; break; } if (flag==1) printf("%d\n", i); } return 0; } |