急求判斷素數的好方法,素數的判斷方法

2025-02-01 21:45:17 字數 2601 閱讀 5002

1樓:網友

通常沒有乙個oi問題會用到大於longint的質數判斷。

可以去2到sqrt(num)逐一去試除。

如果需要在程式中多次進行判斷,可以先建乙個質數表。

建質數表有兩種方法,第一是從2到maxint逐一試,然後建表,另一種是篩子發,就是先過濾2的倍數,然後過濾3的倍數,然後過濾5的倍數,……知道2到maxint都被過一遍,餘下的就是質數。

2樓:

如果樓主問的不是初學者的問題的話,建素數表可以逆用費爾馬小定理,多試幾個底,雖然有幾率但是錯誤率很小的。

3樓:逯舉

program aa;

var a,i:longint;

beginreadln(a);

if a>2 then

for i:=2 to round(sqrt(a)) doif ( a mod i)=0 then writeln('no!')else writeln('yes!')

end. 我這個程式是輸出yes或no來判斷是不是質數。

4樓:網友

如果數很大的話沒有什麼好的方法,只有用電腦。

素數的判斷方法

5樓:ray聊教育

素數的判斷方法如下:1、定義判斷法。根據定義所有素數都是大於1的自然數,那麼小於等於1的數都沒有素數的概念。

數字2只有1和2兩個因數,因而必定是素數,其他數字x只要判定從2到x-1都無法被它整除,就證明改數字是素數。

2、資料理論法。根據數論理論可以把數字分成6個大部分,6i,6i+1,6i+2,6i+3,6i+4,6i+5,也就是說數字x%6計算的值一定是0,1,2,3,4,5這6個數字,而6i,6i+2,6i+3,6i+4一定就是合數,它們都有除了1之外的因數,只有6i+1和6i+5可能是素數,因而一旦判定數字大於等於且6取模結果為0,2,3,4就可以判定不是素數。

3、篩選法,就是從2開始可以知道2的所有倍數都是合數,不是2的倍數可能是素數,第乙個不是2的倍數的數一定是素數,也就是3,接著將3的倍數全部篩選掉,第乙個不是2的倍數也不是3的倍數的數一定是素數也就是5,以此類推,最終篩選出某一範圍內的所有素數。

判斷素數的5種方法

6樓:雲夢

素數判斷可以用解方程方式:對於任意奇數p,(p—1)/2=x。設m,n為大於0的自然數,如果x不滿足x=2mn+m+n,則p必為素數。

判斷素數的方法

7樓:始終做好自己

判斷素數的方法:判斷n是否為素數只需用2~n/2或2~n之間的數去除就可以了,常用2~n/2,因為乙個數的一半的平方大於其本身是從5開始的,解方程:n/2的平方》n 。

即乙個數n的兩個因數不能同時比n/2大。就可以說乙個數若不是素數則一定在2~n/2之間有因數。而且2,3也是符合下面程式的。

素數(又稱質數):就是除了1和它本身,沒有其他因子的整數。注:1既不是素數,也不是合數。

例如17是素數,因為它不能被2~16間。任意一整數整除。因此判斷乙個整數m是否為素數,只需用2~m-1之間的每乙個整數去除,如果都不能被整除,那麼m就是乙個素數。

其實可以簡化,m不必被2~m-1之間的每乙個整數去除,只需被2~根號m之間的每個數去除就可以了。例如判別17是否為素數,只需使2~4之間的每乙個整數去除。為什麼可以做如此簡化呢?

因為如果m能被2~m-1之間任意整數整除,如果這個數大於根號m,那這個數必定對應的還有乙個比根號m小的因子(以16為例是它的因子,8大於4,2小於4)。

素數怎麼判斷 素數的判斷方法

8樓:機器

素數即質數,是指在大於1的自然數中,除了1和它自身外,不能被其他自然數整除的數。

方法一:在手上沒有質數表的情況下,可以用試除法來判斷乙個自然數是不是質數。

例如判斷 是不是質數,就可以按從小到大的順序用去試除,如果能被整除,說明就不是質數,一般情況下用這8 個質數去除就可以了。

方法二:根據質數的定義,在判斷乙個數n是否為質數時,只要用 1 至 n-1去除 n,看看能否整除即可。

判斷素數

9樓:世紀網路

素數:又稱質數。是大於1自然數中的除了自身和1以外不能別其他數整除的數字。

利用這個素數的定義,我們可以得出第一種判斷素數的方法:

這個方法是最簡單的判斷方法,它使用乙個for迴圈來讓n一次次的除以小於n的每個數,如果除盡了的話,就不滿足素數的定義。

但是這個方法也是計算量最大的。它總共會計算n-2次。

第二種方式是:如果 n 能夠被 2 ~ 之間的數整除就不是素數(合數),反之為素數。

所以,根據這個性質我們可以減少判斷的次數來節約運算時間。

這個方法比上乙個方法減少了很多的時間。所以使用這種方法的時候會更能提高程式的效率。

有人可能會問,這裡為什麼是 ?

因為乙個數 n 的的因數可以分為兩部分,一部分是小於 的,另一部分是大於 的。而小於的那部分和大於的一一對應。所以只需要判斷 2 ~ 即可。

如何用C 寫關於判斷數是否為素數的程式

問明 include iostream include math h usingnamespacestd boolisprime intnumber for int i 2 i i number i if number i 0 return false return true void printn...

從鍵盤輸入任意正整數,判斷是否素數的c語言

include void main void sushu int sushu a void sushu int x 最簡單bai的源程du序如下 zhi daomain int ss int n include math.h main include stdio.h include math.h i...

急求用C語言編寫素數展示的程式

分數太少啦。每個要求分還差不多。輸入的個正數,判斷其是否為素數。main int n,i,logo scanf d n if n for i i n i if n i logo break if logo printf 是素數 else if logo printf 不是素數 你還是把分給我吧,我急...