下面的程序,将会让你输入一个整数,然后输出 1 ~ n (包括 n 但不包括 1)的所有素数。
通过特定的筛选方式,得到的素数会被保存到数组,并成为后续筛选的因数。
- #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;
- }
- }
- }
输出结果: