判斷正整數是不是素數,判斷一個正整數是不是素數

2022-12-10 03:36:20 字數 4757 閱讀 7880

1樓:匿名使用者

a÷b=c→a÷c=b。

a如果能被b整除,那麼a一定也能夠被商c整除。

所以在做整除時,每一個較小的除數,總有一個較大的對應的商數。

如果除到商開始比除數小的時候,還沒有出現整除的情況,後面再大的除數也不用再試了。因為後面如果存在一個較大的除數能夠整除,那麼在這之前它所對應的較小的那個商數,也早就能整除。既然沒有發現那個較小的能整除的數,自然後面較大的能整除的除數也不可能存在了。

通常我們在檢查一個數是否是素數時,可以從2,3,5,7……逐個試除,除到這個數的平方根附近的整數就可以結束。在這個範圍內有整除,它就不是素數,沒有整除,就可以判斷它是個素數。

例如127是否是素數?可以用2,3,5 ,7,11去逐個試除,11以後的數就不用考慮了,因為127的平方根在11附近。

2樓:前含合白萱

是對的,大於3.不能被2整除,也不能被n/2整除,大於n/2的數肯定不能被整除,如果整除了,商小於2,肯定是1.這個n/2可以該為根號n,如果一個能被一個大於根號n的整數整除,那麼商肯定小於根號n,所以也能被小於根號n整除,因此只要不能被小於根號n的整數整除,就一定不能被大於根號n的整數整除,只需要驗證到根號n就可以了

判斷一個整數是不是素數的演算法

3樓:zzllrr小樂

建立一個素數表(一般不大於此整數的算術平方根即可)進行試除,或者利用一些常見素數性質,以及被素數整除的性質來判斷

4樓:

一般判斷素數的方法:1)樸素演算法,除數逐個嘗試,直到出現整除 或者 到自己本身複雜度0(n)2)篩素數法, 把合數全篩選出來,複雜度也是o(n)3)rabin miller演算法,利用費馬定理和尤拉定理,隨機挑選數來試驗,複雜度為o(1)

c語言程式設計判斷輸入的正整數是否為素數。

5樓:風翼殘念

將:for(k=2;k<=x[i]-1;k++)改成:for(g=0,k=2;k<=x[i]-1;k++)主要是在這個for迴圈前令g=0。

因為輸入的不止一個數,開頭的初始化g=0,在第一個數的時候就可能已經被改了。後面的數不重新初始化g=0,就不能保證對了。

判斷一個正整數n是不是素數的思路:

思路1):因此判斷一個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼 m 就是一個素數。

思路2):另外判斷方法還可以簡化。m 不必被 2 ~ m-1 之間的每一個整數去除,只需被 2 ~ √m 之間的每一個整數去除就可以了。

如果 m 不能被 2 ~ √m 間任一整數整除,m 必定是素數。例如判別 17 是是否為素數,只需使 17 被 2~4 之間的每一個整數去除,由於都不能整除,可以判定 17 是素數。

原因:因為如果 m 能被 2 ~ m-1 之間任一整數整除,其二個因子必定有一個小於或等於 √m,另一個大於或等於 √m。

例如 16 能被 2、4、8 整除,16=2*8,2 小於 4,8 大於 4,16=4*4,4=√16,因此只需判定在 2~4 之間有無因子即可。

正確**如下:

#include/*sqrt*/

#include/*scanf,printf,system*/

int isprime(int n)//判斷n是否為素數,如果是則返回1,否則返回0。

main ()

擴充套件資料:

輸入一個正整數或0,判斷是否為質數:

#include "stdio.h"

int main()

if(i==flag&&(n%i)!=0)

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

} } }}

6樓:匿名使用者

素數:有無限個,除了1和它本身以外不再有其他的因數。所以可以通過for迴圈從2到n-1依次整除n如果能整除則不是素數,否則就是素數。

參考**:

#include

int fun(int n){//判斷n是否是素數int i;

for(i=2;i

7樓:永星天恆

#include

int main()

if(g==0)

printf("yes ");

else

printf("no ");}}

return 0;

}修改後測試結果正確

8樓:斯嘉麗_熹微

// 輸入一個數,判斷其是否為素數

#include "stdafx.h"

#include

#include

int main()

else if(i==n-1)

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

}system("pause");

return 0;

}希望對你能有幫助

9樓:匿名使用者

輸入:共兩行,第一行一個整數,為輸入正整數的個數n(1<=n<=1000);第二行n個空格隔開的正整數ai(1 <= ai <= 1000)

輸出:一行,對於每個正整數,如果是素數則輸出yes,否則輸出no,中間用空格隔開。

以下是我編寫的程式

#include

int main()

if(g==0)

....

10樓:定定定定定軍

你的**沒錯,不過有點瑕疵。你試試這個**,執行時是不是資訊更清晰了。還有,定義陣列的時候不要定義的太大,那樣浪費記憶體,我該改成100了,呵呵。

給出一個大於或等於3的正整數,判斷他是不是素數

11樓:

4是大於3的正整數,4不是素數,因為素數是在大於1的自然數中,除了1和它自身外不能被其他自然數整除,但是4除了可以被1和4整除以外還可以被2整除,所以它不是素數。

5是大於3的正整數,5是素數,因為5除了能被除了1和它自身外不能被其他自然數整除。

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

12樓:

*求素數的三種方法

一:for(i=2;i<=(n-1);i++)if(n%i==0)i在2到n-1之間任取一個數,如果n能被整除則不是素數,否則就是素數

二:for(i=2;i

void main()

} if(flag==1)}}

13樓:

辦法很簡單,看它是不是有兩個以上的約數,或者看它是不是有除1和它本身以外的約數。約數的範圍在1和這個數的平方根之間。舉個例子,比如12,就是看看在1和3<√12之間還有沒有約數,如果有就不是素數,沒有就是!

怎麼判斷一個正整數是否為素數 流程圖

14樓:

1、首先,開啟clion,在指定的位置建立一個project。點選file->new project。

2、這裡選擇工程的儲存路徑,並輸入工程名,使用c++11標準,會預設建立一個main.cpp。

3、首先建立一個標頭檔案,宣告判斷是否為素數的函式。在專案上右擊->new->c/c++ header file。

4、宣告判斷是否為素數的函式,輸入為一個整型,輸出為0或1。

5、新增一個原始檔,用於寫函式的具體實現。在專案上右擊->new->c/c++ source file。

6、首先對小於2的數過濾,它們不需要進行判斷,一定不是素數。

7、接下來使用for迴圈依次對2~n^(0.5)之間的數進行判斷,若能整除,返回0,說明不是素數。最後,所有都不能整除,再返回1。

8、該程式的輸出結果如下。

15樓:匿名使用者

一、什麼是素數

素數指在一個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。換句話說,只有兩個正因數(1和自己)的自然數即為素數。比1大但不是素數的數稱為合數。

1和0既非素數也非合數。

二、流程圖

三、相關**

16樓:匿名使用者

舉例說,判斷2^67-1是否為素數(如果是則叫做梅森素數),必須證明,這個數有無出自身外的其他因子,若有則不是素數,若無則是素數。人工操作,問題有時候會變得極其複雜,歷史上有一位數學家為了證明這個問題,耗費了20年的業餘時間,才找到:2^67-1=761838257287*193707721表明它不是素數;類似的,如何判斷2^61-1是不是素數呢?

單憑人工檢驗篩除,工作量將是非常巨大的。

好在計算機數學軟體的問世與不斷的發展為人們解決這類問題提供了強大的工具,能用maple檢驗,2^61-1確為一個(梅森素數第九個)素數。

判斷一個正整數是不是素數,這樣艱難無比的工作隨著計算機的出現,將不在困擾人的腦力,同時也讓很多優質大腦擺脫了這種相當枯燥的勞動。

我的意思是,正如開方計算三角函式值這類運算被工具所取代一樣,這種工作我們可以放心地交給計算機來完成了。

判斷一個給定的正整數是否素數

17樓:匿名使用者

**修改如下:

#include

int main()

if(q==0) printf("no\n");

else printf("yes\n");

}return 0;}

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

方法一 用試除法判斷一個自然數a是不是質數時,用各個質數從小到大依次去除a,如果到某一個質數正好整除,這個a就可以斷定不是質數 如果不能整除,當不完全商又小於這個質數時,就不必再繼續試除,可以斷定a必然是質數 方法二 只要找出x為一個奇數和一個偶數平方差的形式 這是一定的 便可以a2 b2 a b ...

求大神輸入正整數n判斷n是否是素數

include include using namespace std int main else if i k i一直加到等於k 還沒有發現整除的數 則判斷為素數!i 1 return 0 include include include using namespace std int main i...

如何判斷方程是不是線性如何判斷一個微分方程是線性,還是非線性微分方程?!

對於一階微分方程,形如 y p x y q x 0的稱為 線性 對於二階微分方程,形如 y p x y q x y f x 0的稱為 線性 例如 y sin x y是線性的,但y y 2不是線性的。注意兩點 1 y 前的係數不能含y,但可以含x,如 y y 2 不是線性的 x y 2 是線性的。2 ...