當前位置:首頁 » 操作系統 » 質數演算法

質數演算法

發布時間: 2022-02-02 15:02:03

⑴ 實現用於計算素數的演算法

#include <stdio.h>
void main()
{
int num[10] = {2,3,4,5,6,7,8,9,10,11};
int *temp = num; // 用於臨時存放素數
int j=0;

for(int i=0;i<10;i++)
{
if(num[i]%2 != 0 )
{
*temp++ = num[i];// 不是2的倍數,就放入temp中
j++; // 用於記錄素數的個數,以便之後的循環使用
}
}
for(int i=0;i<j;i++)
{
printf("%d\n",temp[i]);// 輸出所有素數
}

}

⑵ 什麼是素數呀,判斷是不是素數的演算法是什麼呀

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

⑶ 求質數演算法,看看哪錯了

#!/usr/bin/perl
for($i=2;$i<=10;$i++){
$count=0;
for($j=2;$j<$i;$j++){
if($i%$j==0){
$count+=1;
}
}
#檢查應該放到後面,且,比較要用兩個等號==
if($count==0){
print"$i ";
}
}

c語言素數的演算法

你說的可能是篩法求素數:
它的思路如下:
1,求2-n之間的所有素數
2,創建一個數組a[n+2],其下表為2...n+1
3,數組的功能是記錄那些數十素數,其下標表示素數,元素初始化時全為1,表示全部數假設都是素數
4,從2開始往後訪問數組的每一個元素,如果這個數十素數就輸出,否則往後遍歷
5,遍歷的同時如果這個數i是素數,則進一步往後將這個數的倍數2*i,3*i,....將這些數都標記為0表示不是素數.
6執行完畢將輸出所有素數了

⑸ 這個c程序質數演算法是什麼意思,看不懂。為什麼要 j <= (i/j)呢

判斷條件 j <= (i/j)即j*j<=i,即2~sqrt(i)內判斷是否可整除i,即可判斷i是否是質數,剩下的sqrt(i)+1~i-1沒有必要再判斷,目的無非是少做幾次循環判斷
你寫成j<i也可以,就是多做了若干次無意義的循環判斷而已

⑹ 判斷一個數是否為素數的演算法

找質數的方法:寫出這個數的因數。再判斷這個數是質數還是合數。
1、一個數除了1和本身,不再有別的約數,這樣的數叫做質數或者素數。例如:2,3,5,7,11,13,17,19,23,29等等。
2、一個數,除了1和本身,還的別的因數,這樣的數叫做合數。例如4、8、8、9等等。例如:2的所有因數是1和2兩個,所以2是質數。例如6的所有因數是:1,2,3,6。一共是4個,所以6是合數。
找因12的因數:
1×12=12
2×6=12
3×4=12
所以12的因數有:1,2,3,4,6,12。共6個。
找因數的方法可以把這個數分成兩個因數相乘的積。從一開始比較容易找,寫的時候最好能從小到大寫出來。重復的只能寫一個。例如9的因數:1×9=9
3×3=9
9的因數是:1,3,9共3個。(重復的3隻能寫一個。)

⑺ 什麼是素數演算法

應當是素數判定演算法,也即判斷一個數是不是素數。
常見的演算法有:
1,暴力法,用2~sqrt(n)之間的所有整數依次試除n,這種方法時間開銷很大。
2,篩法。這種方法空間開銷很大。
3,Rabin-Miller演算法,這種方法在一定情況下會誤判。
4,AKS 演算法,多項式時間內判定

⑻ 一個求素數的演算法

t從0到cap^2-1
i從0到cap-1
j從0到i
實際上這里cap起的作用僅僅為了使i和j滿足:i從0到cap-1,j從0到i
實際上composite為j從2到i-1時整除i的個數
當j=0時,使composite重置為0
當j=i時,開始判斷
每次j能整除i,composite則增加1,到時就不會輸出i
當2到i-1的j都不整除i,此時i為素數,composite為0,可以將其輸出

希望你能看明白
不懂的話
還可以問的
一般晚上十點我都有空

⑼ 求一個任意數的相鄰的質數的演算法

1、給定任意數n
2、k=n
3、k=k-1
4、k是
質數
嗎(判斷質數過程)?如果不是則跳回3.如果是則找到比n小的質數,繼續
5、k=k+1
6、k是質數嗎(判斷質數過程)?如果不是則跳回3.如果是則找到比n大的質數。
7、結束
如何判斷一個
自然數
是否為質數的過程比較簡單,不累述。

⑽ c語言求素數的演算法

根據素數的性質,代碼設計如下:

設計一:判斷n是否能被1~n-1整除,不能整除為素數

#include<stdio.h>

int main()

{

int i, n;

scanf("%d", &n);

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

{

if (n%i == 0)

break;

}

if (i < n) printf("This is not a prime.");

else printf("This is a prime.");

return 0;

}

設計二:判斷n是否能被2~√n間的整數整除,不能整除為素數

#include<stdio.h>

#include<math.h>

int main()

{

int n,i;

double k;

scanf("%d", &n);

k = sqrt(n);

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

{

if (n%i == 0) break;

}

if (i <=k) printf("This is not a prime.");

else printf("This is a prime");

return 0;

}

(10)質數演算法擴展閱讀:

1.素數的定義是只能被1和他本身整除,1不是素數.因此要判斷一個數是否為素數.就要判斷它能不能被比他小的所有素數整除,這是一個演算法.(寫到演算法時,我只能寫出用它除以比他小的所有數,造成運算速度低下)

2.如果一個質數大於根號n,而n可以除盡它,那麼n必然也可以除盡一個更小的質數。由此可以得到一個法2較快的素數判斷演算法

熱點內容
php判斷字元開頭 發布:2024-11-15 00:35:33 瀏覽:507
網易蘋果游戲怎麼轉移到安卓 發布:2024-11-15 00:07:52 瀏覽:270
win7php環境搭建 發布:2024-11-15 00:06:55 瀏覽:17
erpjava 發布:2024-11-14 23:52:23 瀏覽:253
電腦版地平線四怎麼連上伺服器 發布:2024-11-14 23:46:42 瀏覽:472
ios怎麼變安卓 發布:2024-11-14 23:46:36 瀏覽:333
win7共享xp列印機拒絕訪問 發布:2024-11-14 23:45:29 瀏覽:750
引起資源配置失效的原因有哪些 發布:2024-11-14 23:35:22 瀏覽:15
c語言打字 發布:2024-11-14 23:11:06 瀏覽:893
存儲程序和程序控制的原理 發布:2024-11-14 22:53:23 瀏覽:323