有沒有方法判斷一個(gè)很大的數(shù)是不是質(zhì)數(shù)? 根據(jù)質(zhì)數(shù)的定義,在判斷一個(gè)數(shù)n是否是質(zhì)數(shù)時(shí),我們只要用1至n-1去除n,看看能否整除即可.但我們有更好的辦法.先找一個(gè)數(shù)m,使m的平方大于n,再用1993,那么我們只要用1993除以 21711 判斷一個(gè)數(shù)是否是素?cái)?shù),有C語言怎么解決啊 #include'stdio.h' #include'math.h' main() { int i,k,m; scanf('%d',&i); k=sqrt(i); //判別i是否為素?cái)?shù),只需使2~根號i之間的每一個(gè)整數(shù)去除 for(m=2;mk) printf('%d是素?cái)?shù) ',i); else printf('%d不是素?cái)?shù)',i); getch(); } 21711 現(xiàn)在數(shù)學(xué)中是否已經(jīng)有質(zhì)數(shù)公式,通過它可以確認(rèn)任何自然數(shù)為質(zhì)數(shù) 還沒有. 有網(wǎng)友提到梅森公式,我簡要介紹一下. “2的一次方減1”等于“1”是素?cái)?shù),“2的2次方減1” 等于“3”是素?cái)?shù),“2的3次方減1” 等于“7”是素?cái)?shù),“2的7次方減1” 等于“127”是素?cái)?shù),“2的127次方減1” 等于“一個(gè)39位的素?cái)?shù)A”是素?cái)?shù),“2的A次方減1” 等于“B”是素?cái)?shù).計(jì)算可知素?cái)?shù)“A”的位數(shù)就約有39位了,那么“2的A次方減1” 等于“B”是素?cái)?shù),得出的“B”素?cái)?shù)就約有“3乘以10的38次方”位.而目前知道的“最大梅森數(shù)”只有9152052位. 但是,請大家注意:不是所有的素?cái)?shù)都符合以上公式的,即若一個(gè)數(shù)“C”是素?cái)?shù),那么2的C次方不一定都是素?cái)?shù).目前為止,人類僅發(fā)現(xiàn)43個(gè)素?cái)?shù),即平均幾百萬個(gè)素?cái)?shù)當(dāng)中只有一個(gè)才是“梅森素?cái)?shù)”. 目前要判定一個(gè)數(shù)是否質(zhì)數(shù),是有效的方法還是用每一個(gè)小于它的平方根的自然數(shù)去除它.這樣巨大的運(yùn)算量必須依靠電子計(jì)算機(jī)才有可能完成. 33930 |
|