如何判斷數是不是素數,如何判斷一個數是不是素數????

2021-08-04 12:06:53 字數 5921 閱讀 5430

1樓:黃河水十八彎

方法一、用試除法判斷一個自然數a是不是質數時,用各個質數從小到大依次去除a,如果到某一個質數正好整除,這個a就可以斷定不是質數;如果不能整除,當不完全商又小於這個質數時,就不必再繼續試除,可以斷定a必然是質數.

方法二、只要找出x為一個奇數和一個偶數平方差的形式(這是一定的)便可以a2-b2=(a+b)(a-b)便是兩個因數。

例如26341,先找出比26341大的一個偶平方數,26896,與它的差是555,肯定不是平方數,再下一個平方數(其實考慮到(x+1)^2=x2+2x+1,因此直接將原數加上2x+1就行了,用不著算x+1的平方),27556, 差1215,也不是,然後28224個位與1的差為3,直接排除,下一個2559也不是(一看就知道它等於50^2+59)。再下個差為3直接排出,再下個、再再下個……找出規律來就很快了,最後221^2=48841,48841-26341=22500,很明顯22500=150^2,就分解出來了26341=71×371

2樓:百度文庫精選

內容來自使用者:kettykettykett判斷一個數是否為素數。

#include

#include

void main( )

求100-200間的所有素數;

#include

#include

void main( )

if(n%10= =0)

printf(「\n」);

}printf(「\n」);} ?

函式:#include

void disp(x)

int x;

main( )

3樓:怎麼打拿什麼打

我真的不知道你們在說啥,除1和本身之外不能被整除是真的有問題,2可以被4整除啊,後來我才發現,是要用奇數來除的,難怪9沒有,9可以除3

4樓:戴琪呂曼冬

比如你現在有數n要判斷是不是質數

boolean

isprime

=true;

for(i=2;

i<=n/2;

i+=2)

}到這裡,這個isprime就能幫你判斷n是不是質數

5樓:

假設該數為n,

如果n能被2~(根號n)的任一整數整除,則n為合數,否則n為素數。

這是因為,合數m總有一個不大於(根號m)的非平凡因子。

6樓:磨年

素數也稱質數,只有1和它本身兩個約數的數叫做素數。

7樓:匿名使用者

你看可以被除了1和它自己本身以外的數整除不?

8樓:空水明月

只能被一和這個數本身整除(既商沒有餘數)

9樓:匿名使用者

只能用比它小的整數一個一個地試除,能整除的就不是素數。

10樓:匿名使用者

素數是除開本身和一之外就不可以整除的數

象 1 3 5

11樓:踏平曰本

靠,1不是素數。別被誤導了哦。

最簡單的方法就是:依次除比它的平方根小的其他素數。

12樓:康楊

判斷一個數是否為素數。

#include

#include

void main( )

13樓:見雪天姬

素數?????????

怎樣判斷一個數是不是質數?

14樓:暴走少女

1、查表法:

主要是指查「質數表」。編制質數表的過程是:按照自然數列,第一個數1不是質數,因此要除外,然後按順序寫出2至100的所有自然數,這些數中2是質數,把它留下,把2後面所有2的倍數劃去,2後面的3是質數,接著再把3後面所有3的倍數劃去,如此繼續下去,剩下的便是100以內的全部質數。

2、試除法:

在手頭上沒有質數表的情況下,可以用試除法來判斷一個自然數是不是質數。例如判斷143、179是不是質數,就可以按從小到大的順序用2、3、5、7、11……等質數去試除。一般情況下用20以內的2、3、5、7、11、13、17、19這8個質數去除就可以了。

如143,這個數的個位是3,排除了被2、5整除的可能性,它各位數字的和是1+4+3=8,也不可能被3整除,通過口算也證明不能被7整除,當試除到11時,商正好是13,到此就可以斷定143不是質數。

擴充套件資料:

一、質數的相關性質

1、質數p的約數只有兩個:1和p。

2、初等數學基本定理:任一大於1的自然數,要麼本身是質數,要麼可以分解為幾個質數之積,且這種分解是唯一的。

3、質數的個數是無限的。

4、質數的個數公式π(n)是不減函式。

5、若n為正整數,在n²到(n+1)²之間至少有一個質數。

6、若質數p為不超過n(n≥4) 的最大質數,則p>n/2。

7、所有大於10的質數中,個位數只有1,3,7,9。

二、相關應用

質數被利用在密碼學上,所謂的公鑰就是將想要傳遞的資訊在編碼時加入質數,編碼之後傳送給收信人,任何人收到此資訊後,若沒有此收信人所擁有的金鑰,則解密的過程中(實為尋找素數的過程),將會因為找質數的過程(分解質因數)過久,使即使取得資訊也會無意義。

在汽車變速箱齒輪的設計上,相鄰的兩個大小齒輪齒數設計成質數,以增加兩齒輪內兩個相同的齒相遇齧合次數的最小公倍數,可增強耐用度減少故障。

15樓:匿名使用者

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

還有更好的辦法:先找一個數m,使m的平方大於n,再用小於等於m的質數去除n(n為被除數),如果都不能整除,則n必然是質數。如我們要判斷1993是不是質數,50*50>1993,那麼只要用1993除以<50的質數看是否能整除,若不能即為質數。

100以內的質數有25個,還是比較好記的,只要記熟100以內質數,就可以快速判斷10000以內的數是不是質數。

100以內的質數有2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97,在100內共有25個質數。

只有1和它本身兩個因數的自然數,叫質數(或稱素數)。(如:由2÷1=2,2÷2=1,可知2的因數只有1和它本身2這兩個約數,所以2就是質數。

與之相對立的是合數:「除了1和它本身兩個因數外,還有其它因數的數,叫合數。」如:

4÷1=4,4÷2=2,4÷4=1,很顯然,4的因數除了1和它本身4這兩個因數以外,還有因數2,所以4是合數。)

16樓:沒名的精靈

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

17樓:鞽鞽

輾轉相除 的方法是判斷兩個數是否互質。

所以判斷是不是質數是行不通的。

應該用質數去嘗試,試到兩個緊挨這的數的時候,還沒有成功,就不要再試了,這個數就是質數。

沒有其他更好的方法,要是有我就會非常非常高興了!!^_^

18樓:

判斷一個數

是質數還是合數,那麼:

1:當這個數大於7時:就用這個數分別取除以2,3,5,7.如果這個數除以2,3,5,7都除不盡那麼這個數就是質數,只要這個數能除盡2,3,5,7的任何一個數那麼這個數就是合數.

2:當這個數小於等於7時你就只需要記得2,3,5,7是質數就行了.

19樓:heh巨蟹

質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。

輾轉相除法是判斷兩個數是否互質的,而不是應用在一個數上,是求兩個數的大公約數。

輾轉相除法的具體做法:用較小數除較大數,再用出現的餘數(第一餘數)去除除數,再用出現的餘數(第二餘數)去除第一餘數,如此反覆,直到最後餘數是0為止。如果是求兩個數的最大公約數,那麼最後的除數就是這兩個數的最大公約數。

這是具體流程圖,判斷一個數是否是質數就是看它能否被除1以外的數整除。

20樓:匿名使用者

約數是成對出現的。比如24,你找到個約數3,那麼一定有個約數8,因為24/3=8。

然後,這對約數必須一個在根號n之前,一個在根號n之後。因為都在根號n之前的話,

乘積一定小於n(根號nx根號n=n),同樣,都在根號n之後的話,乘積一定大於n。

所以,如果你在根號n之前都找不到約數的話,那麼根號n之後就不會有了。

21樓:匿名使用者

一個數,如果只有一和它本身的兩個因數這樣的數叫做質數

22樓:lv呂虎成

好像是除了1,2以外只要不被2,3,5,49整除的數都是質數

23樓:聆聽雨菲

質數就是在所有比1大的整數中,除了1和它本身以外,不再有別的約數,這種整數叫做質數或素數。還可以說成質數只有1和它本身兩個約數。簡單的說,就是這個數只能整除1和本身.

24樓:游擊隊副隊長

只能被1和它本身整除

25樓:裡先明

?(*^ω^*)123457890

如何用c語言程式設計判斷一個數是不是素數?

26樓:問明

方法一:

#include<stdio.h>

int main(){

int i,j;

printf("請輸入一個正整數。\n");

scanf("%d",&i);

if(i<2)

printf("小於2,請重新輸入。\n");

elseif(i%2==0)

printf("%d不是一個素數。\n",i);

else{

for(j=2;j<=i/2;j++){

if(i%j==0){

printf("%d不是一個素數。\n",i);

break;

}if(j>i/2){

printf("%d是一個素數。\n",i);

break;}}

}}方法二:

#include<stdio.h>

int main(){

int a=0;

int num=0;

scanf("%d",&num);

for(inti=2;i<num-1;i++){if(num%i==0){

a++;}}

if(a==0){

printf("yes\n");

}else{

printf("no\n");}}

方法三:

#include"stdio.h"

int main(){

printf("\t\t\t\t\thelloworld\n");

int a,i;

do{printf("inputnumberjudgeprimenumber:\n");

scanf("%d",&a);

for(i=2;i<a;i++)

if(a%i==0)break;

if(i==a)

printf("%d是素數\n",a);

else

printf("%d不是素數\n",a);

}while(a!=0);}

27樓:風若遠去何人留

判斷素數的方法很多。

以數學方法為例,按照數學規則,如果在2~n-1中存在因子,則n不是素數。否則n為素數。

int is_prime(int n)//判斷n是否為素數。

在此基礎上,可以將判斷範圍優化為i <= n/2 或i <=sqrt(n)(sqrt為算數平方根函式)。

這樣可以減少判斷次數,提高效率。

怎麼判斷是不是宮外孕,如何判斷是不是宮外孕?

有的宮外孕是沒有任何感覺,需要靠bc來看的。有的會有下腹痛的症狀,有的會出血,腰痛。如果懷孕了,在12周前一定要確診是否宮內孕,如果萬一是宮外孕而不處理的話,會給你帶來傷害的。祝順利。宮外孕是指孕卵在子宮腔外著床發育的異常妊娠過程。查宮外孕或者宮內孕最簡單的辦法是做b超,如果發現宮內有孕囊,基本上就...

怎樣判斷數是不是質數怎樣判斷一個數是不是質數?

1 查表法 主要是指查 質數表 編制質數表的過程是 按照自然數列,第一個數1不是質數,因此要除外,然後按順序寫出2至100的所有自然數,這些數中2是質數,把它留下,把2後面所有2的倍數劃去,2後面的3是質數,接著再把3後面所有3的倍數劃去,如此繼續下去,剩下的便是100以內的全部質數。2 試除法 在...

c語言中判斷自然數是不是素數的條件是什麼

1,首先了解素數的定義,一個大於1的自然數,除了1和它本身外,不能被其他自然數整除。2,以下是c語言程式。include int main if flag 0 根據flag的值判斷n是否是素數printf d不是素數 n elseprintf d是素數 n return 0 c語言程式設計判斷輸入的...