标签:
1 #include <stdio.h>
2
3 int main(void)
4 {
5 const int len = 100;
6 int prime[len];
7 for (int i=0; i<len; i++)
8 prime[i] = 1; // 1 标记这个序号数为素数,0标记为非素数
9 for (int x=2; x<len; x++)
10 {
11 for (int j=2; x*j<len; j++)
12 prime[x*j]=0;
13 }
14 for (int k=2; k<len; k++)
15 {
16 if (prime[k]==1)
17 printf("%d ", k);
18 }
19 printf("\n");
20 return 0;
21 }
看不懂代码了看这里:
假设从2到n个数,我要求其中的素数,已知2为素数。我可以假设都是素数。利用数组prime,例如序号数为4的元素,它不是素数,那prime[4]=0。
好,现在创建prime,让所有值初始化为1,然后让2逐渐增大倍数(从2倍到m倍,这个m*2<=n),这些2的倍数显然都不是素数,需要把对应角标的元素的值改为0.
然后2增加1,重复这个过程,直至n。剩下的角标对应元素值为1的,那些角标的数值就是一个素数。可以依次打印之。
标签:
原文地址:http://www.cnblogs.com/omnipotent/p/4180393.html