素數演算法
⑴ 判斷一個數是否為素數的演算法
找質數的方法:寫出這個數的因數。再判斷這個數是質數還是合數。
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隻能寫一個。)
⑵ C++求素數的演算法
#include<iostream.h>
void main()
{
int i,j;
cout<<"輸出100以內的素數"<<endl;
cout<<"100內的素數為"<<endl;
for(i=1;i<=100;i++)
{for(j=2;j<i;j++)
{if(i%j==0)
break; }
if(i==j)
cout<<" "<<i;}
}
素數的范圍通過修改100就行了
⑶ 判斷一個整數是不是素數的演算法
建立一個素數表(一般不大於此整數的算術平方根即可)進行試除,或者利用一些常見素數性質,以及被素數整除的性質來判斷
⑷ 一個求素數的演算法
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,可以將其輸出
希望你能看明白
不懂的話
還可以問的
一般晚上十點我都有空
⑸ c語言素數的演算法
你說的可能是篩法求素數:
它的思路如下:
1,求2-n之間的所有素數
2,創建一個數組a[n+2],其下表為2...n+1
3,數組的功能是記錄那些數十素數,其下標表示素數,元素初始化時全為1,表示全部數假設都是素數
4,從2開始往後訪問數組的每一個元素,如果這個數十素數就輸出,否則往後遍歷
5,遍歷的同時如果這個數i是素數,則進一步往後將這個數的倍數2*i,3*i,....將這些數都標記為0表示不是素數.
6執行完畢將輸出所有素數了
⑹ 生成素數表的演算法有哪些
篩選法求素數表,最快的素數表生成演算法。
所謂「篩選法」指的是「埃拉托色尼(Eratosthenes)篩法」。他是古希臘的著名數學家。他採取的方法是,在一張紙上寫上1到100全部整數,然後逐個判斷它們是否是素數,找出一個非素數,就把它挖掉,最後剩下的就是素數。
具體做法如下:
<1> 先將1挖掉(因為1不是素數)。
<2> 用2去除它後面的各個數,把能被2整除的數挖掉,即把2的倍數挖掉。
<3> 用3去除它後面的各數,把3的倍數挖掉。
<4> 分別用4、5…各數作為除數去除這些數以後的各數。這個過程一直進行到在除數後面的數已全被挖掉為止。例如找1~50的素數,要一直進行到除數為47為止(事實上,可以簡化,如果需要找1~n范圍內素數表,只需進行到除數為n^2(根號n),取其整數即可。例如對1~50,只需進行到將50^2作為除數即可。)
如上演算法可表示為:
<1> 挖去1;
<2> 用剛才被挖去的數的下一個數p去除p後面各數,把p的倍數挖掉;
<3> 檢查p是否小於n^2的整數部分(如果n=1000, 則檢查p<31?),如果是,則返回(2)繼續執行,否則就結束;
<4> 紙上剩下的數就是素數。
參考鏈接:http://blog.chinaunix.net/uid-9078996-id-2010292.html
⑺ 什麼是素數演算法
應當是素數判定演算法,也即判斷一個數是不是素數。
常見的演算法有:
1,暴力法,用2~sqrt(n)之間的所有整數依次試除n,這種方法時間開銷很大。
2,篩法。這種方法空間開銷很大。
3,Rabin-Miller演算法,這種方法在一定情況下會誤判。
4,AKS 演算法,多項式時間內判定
⑻ c語言素數的演算法
思路如下:
1、求2-n之間的所有素數
2、創建一個數組a[n+2],其下表為2...n+1
3、數組的功能是記錄那些數十素數,其下標表示素數,元素初始化時全為1,表示全部數假設都是素數
4、從2開始往後訪問數組的每一個元素,如果這個數十素數就輸出,否則往後遍歷
5、遍歷的同時如果這個數i是素數,則進一步往後將這個數的倍數2*i,3*i,....將這些數都標記為0表示不是素數 6、執行完畢將輸出所有素數了
⑼ 實現用於計算素數的演算法
#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]);// 輸出所有素數
}
}
⑽ 計算機C語言求素數演算法,
這個有很多種
常用的 判斷除以2.,除以。。。。。 這適用於判斷具體的某個數組
剔除法 除以2的時候 把2的倍數全部剔除 以此類推。。。 這適合求多個
已有查找法,用文件數組保存一些素數,為方便使用直接查找 這個屬於取巧類型嚴格不算演算法
還有其他比較高級一些的演算法這個可以具體找找