- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
使用筛法
比如2是素数,那么2的倍数都不是素数,下一个是3 是素数,3的倍数都不是素数,下一个是5(4在前已经被排除了).....- #include <stdio.h>
- #define MAXN 40000
- int SPrime(void)
- {
- int i = 0;
- int j = 0;
- int prinme[MAXN] = {0};
- int n = 0;
- for (i = 2; i < MAXN; i++)
- {
- prinme[i] = 1;
- }
- for (i = 2; i < MAXN; i++)
- {
- if(prinme[i] == 1)
- {
- for (j = 2; i*j < MAXN; j++)//倍数置0
- {
- prinme[i*j] = 0;
- }
- }
- }
- freopen("output.txt", "w", stdout);
- <span style="white-space:pre"> </span>//最后数组中为1的就是素数
- for (i = 0 ,j = 0; j < MAXN; j++)
- {
- if(prinme[j] == 1)
- {
- printf("%d ",j);
- n++;
- if(n == 13)
- {
- n = 0;
- printf("\n");
- }
- i++;
- }
- }
- return i;
- }
- void main()
- {
- int num = SPrime();
- printf("\n素数个数:%d\n",num);
- freopen( "CON", "w", stdout );
- printf("素数个数:%d\n具体数据见运行目录output.txt\n",num);
- getchar();
- }
复制代码 |
|