求 1-10000之間所有的素數
阿新 • • 發佈:2018-12-30
這次我們學校的興趣實驗室納新,除了一個題,做了一下!
不知道還能不能繼續優化。
誰有更好的想法,在評論區留言!
寫的不好,莫怪!
第一次:
#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;
}
結果:
不知道各位道友,還有沒有更好的方法實現,還望指點!