这次我们学校的兴趣实验室纳新,除了一个题,做了一下!
不知道还能不能继续优化。
谁有更好的想法,在评论区留言!
写的不好,莫怪!
第一次:
#include <stdio.h>
/********************************/
/* 找寻 1-10000之间所有的素数 */
/********************************/
int main(void)
{
int max=10000,num=0;
int i,j;
for(i=1;i<max;i++)
{
for(j=2;j<i;j++)//判断是不是素数
{
if(i%j==0)
{
break;
}
}
if(j==i)
{
printf("%d\t",i);
num++;
}
}
printf("\n%d",num);
return 0;
}
结果:
注意时间!
第二次:(优化)
#include <stdio.h>
/********************************/
/* 找寻 1-10000之间所有的素数 */
/********************************/
int main(void)
{
int max=10000,num=0;
int i,j;
printf("%d\t",2);//2是偶数里唯一的素数
num++;
for(i=3;i<max;i+=2)//优化1:i+=2,排除偶数
{
for(j=2;j<=i/2;j++)//优化2:j<=i/2,只计算了前半段的数字
{
if(i%j==0)
{
break;
}
}
if(j>i/2)
{
printf("%d\t",i);
num++;
}
}
printf("\n%d",num);
return 0;
}
结果:
不知道各位道友,还有没有更好的方法实现,还望指点!