什麼是素數演算法,求素數的演算法

時間 2021-12-20 15:36:57

1樓:難得當歌對酒時

應當是素數判定演算法,也即判斷一個數是不是素數。

常見的演算法有:

1,暴力法,用2~sqrt(n)之間的所有整數依次試除n,這種方法時間開銷很大。

2,篩法。這種方法空間開銷很大。

3,rabin-miller演算法,這種方法在一定情況下會誤判。

4,aks 演算法,多項式時間內判定

2樓:昔俊能

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

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

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

c語言**演算法:

#include

main()}}

3樓:匿名使用者

素數演算法是素數判定演算法,也即判斷一個數是不是素數。

質數(prime number)又稱素數,有無限個。一個大於1的自然數,除了1和它本身外,不能被其他自然數(質數)整除,換句話說就是該數除了1和它本身以外不再有其他的因數;否則稱為合數。

根據算術基本定理,每一個比1大的整數,要麼本身是一個質數,要麼可以寫成一系列質數的乘積;而且如果不考慮這些質數在乘積中的順序,那麼寫出來的形式是唯一的。最小的質數是2。

新手求教 c語言素數判斷演算法

4樓:匿名使用者

就是判斷從2開始到一個數的平方根中若不能被他整除,那麼該數就是素數;

網上**是若能整除則跳出,所有條件不能整除則輸出是素數。

他是只需要一種判斷,不滿足則跳出,那麼跳出後i < n,所以可以用。

你的**思路沒有錯,只不過網上沒有使用的優化的演算法,如果你想弄明白怎麼優化,那你需要在數學中找答案

5樓:獅子

網上的**意思是:n就是你輸入的任意數,判斷它是否是素數的方法是用大於2小於n的數去除n,若能整除即不是素數,跳出迴圈;若數一直增加到n+1都沒有被整除,即可輸出「素數」。

你的源程式:3是素數,很簡單,所以用if來提醒輸入大於3的數,你的只是另一種素數演算法,是優化的演算法,更快。因為只需用2到根號a去判斷。

6樓:去塵遠

第一個if:如果輸入的數n,能夠整除小於n的某一個數i,證明數n有約數i,此時break後,i的值一定是小於n的。

第二個if:如果i的值比n大,說明上述的for迴圈沒有進入到第一個if裡面,所以從2到n-1之間沒有一個數是n的約數。所以可以判定n是素數。

7樓:湛藍星空

//判斷一個數num是否為素數

#include

int main()

int num,i,n=0;

while(1)

scanf("%d",&num);//輸入一個數numif(num==2) printf("%d是素數\n",num);

else if(num>=3)

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

if((num%i)==0) n++;

if(n==2) printf("%d是素數\n",num);

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

n=0;

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

return 0;

求素數的演算法

8樓:匿名使用者

就是除了1和它本身外沒有能被整除的數,如7 11 13 17等

9樓:匿名使用者

除了1和它本身,沒有其他因數的,就是素數。

很「自然」了吧

10樓:匿名使用者

素數:只能被1或自身整除的整數。

判斷整數n是否為素數——採用窮舉法求解。

基本演算法:若 k%m==0 則說明 k 不是素數。其中 m 的取值範圍為:2~k的算術平方根。

偽語言描述:標誌變數flag,=1為素數,=0為合數。

for ( flag=1,m=2; flag && m

if ( flag ) 是素數;

else 不是素數;

11樓:

你們這些人,人家問演算法。

很簡單,從2到該數字的平方根求餘數,沒有0餘數就是素數。

12樓:匿名使用者

除了1和它本身,沒有數能被它除還沒有餘數的

吼吼,大白話啊

13樓:匿名使用者

-_-~一句一句的說嘛

c語言程式設計 求1到20的素數

以下是求1到20的素數的c語言程式 c include int main int i,j,flag printf 1 20的素數有 for i 2 i 20 i flag 0 for j 2 j i 2 j if i j 0 flag 1 break if flag 0 i 1 printf d i...

素數 的含義是什麼(數學範圍)

祭盼雁戢鳴 指在一個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。換句話說,只有兩個正因數 1和自己 的自然數即為素數。比1大但不是素數的數稱為合數。1和0既非素數也非合數。素數在數論中有著很重要的地位。最小的素數是2,他也是唯一的偶素數。最前面的素數依次排列為 2,3,5,7,...

求200 300之間全部素數的和,C語言程式設計

思路 定義一個函式用於判斷該數是否是素數,接著從200到300進行依次判斷該數是否是素數,如果是則累加,最後輸出累加和即可。include int fun int n 判斷該數是否是素數int i for i 2 i 用c語言編一程式,輸出200 300之間的全部素數,求解啊 樓上的樓上演算法可以改...