下面的程序,将会让你输入一个整数,然后输出 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;
}
}
}
输出结果: