C语言输出0~n的所有素数
下面的程序,将会让你输入一个整数,然后输出 1 ~ n (包括 n 但不包括 1)的所有素数。
通过特定的筛选方式,得到的素数会被保存到数组,并成为后续筛选的因数。
Enter value of N > 20
2
3
5
7
11
13
17
19
通过特定的筛选方式,得到的素数会被保存到数组,并成为后续筛选的因数。
#include <stdio.h> #define NPRIMES 1000 #define FALSE 0 #define TRUE 1 int main(void) { int n; int i,j; int flag; int primes[NPRIMES]; // 保存比 n 小的素数 int level; // 当前素数的数目加1 printf("Enter value of N > "); scanf("%d",&n); level = 0; for(i=2;i<=n;i++) { for(j = 0, flag = TRUE; j<level && flag; j++) flag = (i%primes[j]); if (flag) { // i 是一个素数 printf("%12d\n", i); if (level < NPRIMES) primes[level++] = i; } } }输出结果:
Enter value of N > 20
2
3
5
7
11
13
17
19