1. 程式人生 > >求 1-10000之間所有的素數

求 1-10000之間所有的素數

這次我們學校的興趣實驗室納新,除了一個題,做了一下!
不知道還能不能繼續優化。

誰有更好的想法,在評論區留言!

寫的不好,莫怪!

第一次:

#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; }

結果:
這裡寫圖片描述

不知道各位道友,還有沒有更好的方法實現,還望指點!