不是计算机专业,看不懂5楼的代码。只能稍微优化一下楼主的程序。
程序代码:
[ 本帖最后由 ying8501 于 2014-4-2 20:36 编辑 ]
程序代码:#include <stdio.h>
#include <math.h>
#define max 300
int main()
{ int i,k,j,t[max]={0,0,2}, M=sqrt(max);
for(i=3; i<max;i+=2)t[i]=i; //将3~max-1中奇数放入数组
// 逐步去掉3的倍数,5的倍数…,(<= sqrt(max))等素数的倍数
// 将k的倍数置为0
k=3; //初始素数
while(k<=M)
{
for(j=k+2;j<max;j+=2) //从奇数k+2~max中去掉k的倍数
if( j%k==0) t[j]=0;
k=k+2;
while(t[k]==0)k+=2; //找出下一个素数
}
j=0;
for(i=2; i<max;i++)
{
if(t[i]!=0)
{
printf("%6d",i);j++;
if(j%10==0) printf("\n");
}
}
printf("\n\n 一共有%d个素数.\n",j); return 0;
}[ 本帖最后由 ying8501 于 2014-4-2 20:36 编辑 ]









