本文目錄一覽:
C語言中判斷素數涉及sqrt的問題
假設一個數a;
那麼a=(a^1/2)*(a^1/2);
如果a不是素數;
那麼a有一個因子b
a=b*c;
那麼a的因子中(b或c)必定有一個是小於等於a^1/2的;
所以判斷的時候不用判斷到1-a,只需要1-a^1/2;
一個數的因子不可能大於其平方根,因此可以縮小範圍。
c語言用sqrt求素數原理
如果不用素數篩法的話,一般都是for求的。
設該數為n,則若該數為質數,則有a*b=n始終成立(a,b1)。
當a=sqrt(n)時
n/sqrt(n)=sqrt(n)
則n/a=sqrt(n)
n/a=b
所以b=sqrt(n)
可以發現,一個質數的兩個因數,至少有其中一個小於等於根號n。
可推得若一個整數沒有至少一個因數小於根號n,則它為素數。
綜上,sqrt(n)為判斷素數的最小臨界條件。
c語言中,用sqrt()素數的判定
當那個for循環結束了,,那個i就是k+1了!!而當那個i=k+1時,說明for一直運行完都沒有break,所以m就是素數!!!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/154485.html