判斷素?cái)?shù)的5種方法 判斷一個(gè)數(shù)是素?cái)?shù)的算法?
判斷一個(gè)數(shù)是素?cái)?shù)的算法?1. 查表法:主要指“素表”。素?cái)?shù)表的編制過程是:根據(jù)自然數(shù)列,第一個(gè)數(shù)字1不是素?cái)?shù),所以應(yīng)該排除它。然后把從2到100的所有自然數(shù)按順序?qū)懗鰜恚渲?是素?cái)?shù),不寫,劃掉2后2
判斷一個(gè)數(shù)是素?cái)?shù)的算法?
1. 查表法:主要指“素表”。素?cái)?shù)表的編制過程是:根據(jù)自然數(shù)列,第一個(gè)數(shù)字1不是素?cái)?shù),所以應(yīng)該排除它。然后把從2到100的所有自然數(shù)按順序?qū)懗鰜?,其?是素?cái)?shù),不寫,劃掉2后2的所有倍數(shù),2后3是素?cái)?shù),然后劃掉3后3的所有倍數(shù)。如果這樣下去,剩下的都是100以內(nèi)的素?cái)?shù)。2試算法:在沒有素?cái)?shù)表的情況下,可以用試算法來判斷一個(gè)自然數(shù)是否為素?cái)?shù)。例如,要確定143和179是否是素?cái)?shù),可以按降序使用2、3、5、7、11讓我們嘗試除以素?cái)?shù)。一般來說,20以內(nèi)的2、3、5、7、11、13、17、19的素?cái)?shù)可以去掉。例如,143,這個(gè)數(shù)字的數(shù)字是3,排除了被2和5整除的可能性。它的數(shù)字之和是1.43=8,不能被3整除??陬^計(jì)算也證明了它不能被7整除。當(dāng)我們試圖把它除以11時(shí),商正好是13,所以我們可以得出143不是素?cái)?shù)的結(jié)論。素?cái)?shù)P只有兩個(gè)因子:1和2。初等數(shù)學(xué)基本定理:任何大于1的自然數(shù)要么是素?cái)?shù),要么可以分解成若干素?cái)?shù)的積,且分解是唯一的。三。素?cái)?shù)的數(shù)目是無限的。4素?cái)?shù)π(n)的個(gè)數(shù)公式是一個(gè)不可減函數(shù)。5如果n是正整數(shù),那么在n2和(n1)2之間至少有一個(gè)素?cái)?shù)。6如果素?cái)?shù)P是不超過n(n≥4)的最大素?cái)?shù),則P>N/2。7在所有大于10的素?cái)?shù)中,單個(gè)數(shù)字只有1、3、7和9。2、 相關(guān)的應(yīng)用素?cái)?shù)用于密碼學(xué)。所謂公鑰,就是在編碼時(shí)給要傳送的信息加上一個(gè)素?cái)?shù),編碼后再傳送給接收者。如果任何人接收到這個(gè)信息,并且沒有接收者擁有的密鑰,解密過程(實(shí)際上是尋找素?cái)?shù)的過程)就會(huì)因?yàn)閷ふ宜財(cái)?shù)的漫長過程(分解素?cái)?shù)因子)而延遲,甚至對信息的訪問也是毫無意義的。在汽車變速器齒輪設(shè)計(jì)中,將相鄰大小齒輪的齒數(shù)設(shè)計(jì)為素?cái)?shù),以增加兩個(gè)齒輪中兩個(gè)相同齒嚙合次數(shù)的最小公倍數(shù),從而提高了耐久性,減少了失效。
判斷一個(gè)數(shù)是不是質(zhì)數(shù)的算法?
素?cái)?shù)也稱為素?cái)?shù)。所謂素?cái)?shù),是指除1和素?cái)?shù)本身外,不能被任何整數(shù)除的數(shù)。
該代碼的基本思想是:如果M不能被其平方根中的任何數(shù)字除,則M必須是素?cái)?shù)。
代碼解析如下:
main()
{
int m//輸入的整數(shù)
int i//循環(huán)數(shù)
int k//m的平方根
scanf(%D,& m)//輸入m
k=sqrt(m)//將k賦給m的根
for(I=2I<=Ki)//從2到k加1個(gè)循環(huán)
如果(m%I==0)中斷//當(dāng)m可以將I除以整數(shù)時(shí),退出而不進(jìn)行整數(shù)除法,表示素?cái)?shù)
如果(I>=k1)
printf(%d是數(shù)字n,m)時(shí)的素?cái)?shù))//I不小于k1,M是素?cái)?shù),否則,M不是素?cái)?shù)
else
printf(%d不是素?cái)?shù)n,M)]}
]擴(kuò)展數(shù)據(jù):
判斷素?cái)?shù)程序代碼的另一種方法:要判斷整數(shù)M是否是素?cái)?shù),只需按2到M-1之間的每一個(gè)整數(shù)取M即可。如果它不能被整除,那么M是素?cái)?shù)。
代碼和解析如下:
#include<stdio。H>
int main(){
int a=0//素?cái)?shù)
int num=0//輸入整數(shù)
printf(“input an integer:”)
scanf(%d”,&num)
for(int i=2I<numi){
if(num%i==0){
a//素?cái)?shù)加1
}]}
]if(a==0){
]printf(%d是質(zhì)數(shù)。n”,數(shù)字)