使用筛法
比如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();
}