用C語言程式設計求 n以內素數的個數(n10 8)

時間 2021-09-07 11:58:35

1樓:匿名使用者

寫了一個,連寫檔案也只用13秒.

ncount=5761455

time=13s

#include

#include

void main()

//先假設所有的數都是素數

for(i=0;i

pbyte[0]=false;//0不是素數pbyte[1]=false;//1不是素數pbyte[2]=true;//2是素數

//篩選,所有偶數都不是素數(除2以外)

for(i=4;i

//篩選所有素數的整數倍都不是素數

for(i=3;i

file *file;

if( (file = fopen( "test.txt", "a" )) == null )

ncount=0;

for(i=2;i

time(&tend);

fclose( file);

delete pbyte;}

2樓:匿名使用者

main()

for(i=1;i<=s;i++)

printf(%d,a[i]);

}定義部分略

3樓:匿名使用者

首先肯定要定義成long 型了

這個n 從以下幾方面進行處理:

1:偶數者除了2以外均不是,任務將縮短一半 可採用 n+=2實現

2:最後一位是5的除了5以外不是素數,任務在1的基礎上縮短1/5

3:在判斷能被3及根號或一半n之間的資料時,也採用全用質數的方法i+=2 以及除去尾數是5的數。這樣在每個n值下,檢測不能被i整除的任務將縮短1/2+1/5即7/10。

4:對於資料較大的n可以採用位運算、移位運算、加法運算將其十進位制時各位數字之和除以3,能整除者不是素數。

建議採用**處理1-10 10-100 000 100 000-100000000分別編制程式段採用不同方法實現。

1-10 :簡單處理

1 0-100 000:採用1,2,3(i採用3——n/2)

100 000-100000000:採用1,2,3(i採用3——根號n),4

「warmwormn - 舉人 五級

。。。。。。。

篩選 每次把質數的倍數全部刪除

只有迴圈和加法

」綜觀不如樓上的方法(但實現很麻煩,並且表達不對):如下

1定義一個素數儲存陣列a:

2每一個n(>2),除去偶數,只要將已經存在在a中資料進行組合相乘,均不與當前n相等的話,則n 為素數,存入a 中

3當然在組合過程中,

!: 明顯小於前一個n時,可捨去不再比較,也不再累計到下一個n的比較。

!!:大於當前n及其後面的組合可捨去不再比較,但需要累計到下一個n的比較。

只有利用了這種方法,才有可能,降低運算工作量

c語言求100以內的素數

1024程式設計師 c語言經典例子之求100之內的素數 bp哥 這個問題是c語言中比較常見的一種題目,做法有很多中,我這裡提供一種最基礎的演算法,如下 c語言 求100以內素數。include voidmain inti,j for i 2 i 100 i intt 1 for j 2 j 廖慨督斯...

c語言問題求從n到m的所有素數,C語言 求n到m之間所有的素數

include int main 希望可以幫助到你!c語言 求n到m之間所有的素數 include int main if u 1 s 0 return 0 你的if u i 0 是不是有問題應該是if u i 0 你這裡是要取餘把 是餘數為0 c語言 輸出n到m之間的所有素數 對n到m之間所有數進...

C語言,求1 3 5n的程式設計,怎樣利用C語言程式設計求1 3 5 N 的值?

庚午子李 有技術含量的,遞迴求解 include int a int n void main 給你個完整點吧 include int main while n 2 0 for int sum 0,i 1 i n i 2 sum i printf sum d n sum return 0 扛菸頭的大槍...