判斷自然數m(m>1)是不是素數
方法一:迴圈遍歷(時間複雜度o(n))
m除[2,m)裡的數值,結果值不為整數就可知是素數
#include
#include
intmain()
if(i>=m)
printf
("%d是素數\n"
,m);
else
printf
("%d不是素數\n"
,m);
end=
clock()
;printf(,
(end-start)
/clocks_per_sec)
;return0;
}
方法二:開根號法(時間複雜度o(√n))
如果乙個數不是素數,則必定有乙個因子小於它的平方
只要將方法一的迴圈和條件判斷修改以下即可
for
(i=2
;i<=
sqrt
(m);i++
)//如果乙個數不是素數,則必定有乙個因子位於平方左邊
if(i>=
sqrt
(m))
printf
("%d是素數\n"
,m);
else
printf
("%d不是素數\n"
,m);
方法三:eratosthenes篩選法(時間複雜度o(nloglogn))
#include
#include
intmain()
}}for(
int i=
2;i<
100;i++)if
(prime[i]
)printf
("%d "
,i);
return0;
}
方法四:尤拉篩選法(o(n))
後面在演算法複習的時候補充吧
ZT 0是不是自然數
簡介 很遺憾,這個問題沒有明確的答案,0究竟是不是自然數仍然是乙個有爭論的問題。我們常說的自然數,緣起於數數,通常用作 基數 和 序數 比如 我國有4個直轄市 的4是基數,東京是世界第1大城市 的1是序數,那麼有沒有0個和第0個這樣的問題,就有種公說公有理婆說婆有理的意味。早在西元前400年,巴比倫...
判斷乙個數是不是某個自然數的平方
基本思路是二分查詢,只是判斷標準變為x 2 key 改進思路是縮小二分查詢的起始區間,步驟如下 改進思路的證明 假設存在k,使得2 k n 2 k 對不等式兩邊乘以2 k,得到 2 k 2 n,即2 k sqrt n 2 k即為a 再對上述結論兩邊取倒數,得1 2 k 1 sqrt n 分母有理化得...
C語言 判斷乙個數是不是素數
判斷素數的方法 素數 指整數在大於1的自然數中,除了1和本身外,無法被其他自然數整除。簡而言之,素數只能被1和它本身整除 方法一 include include pragma warning disable 4996 intmain 方法二 用函式實現 因為因子都是對稱出現,故可將 優化,只需要遍歷...