質數演算法
⑴ 實現用於計算素數的演算法
#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較快的素數判斷演算法