判斷自然數m m 1 是不是素數

2021-10-19 08:16:57 字數 1082 閱讀 6576

判斷自然數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 方法二 用函式實現 因為因子都是對稱出現,故可將 優化,只需要遍歷...