1樓:霧月の沉默
這兒有你想要的bai回答
因為如果n可以被du一個zhi數整除,那麼其中一個數一定小於等dao於n開方,
內另一個大於等於n的開方,所以容只需要算到這兒,到後面就是多餘的了
2樓:倒黴熊
素數是抄
除1和本身
外,沒有襲其他因子。
假設 這個數baix的 平方根
du為 a。
證明,比a大的比本身zhix小的dao沒有比較的必要。
假設 b >a ,且是x的因子,那麼一定存在一個c使 c*b =x,且 ca,若c>a,則 b*c>x)
那麼判斷到c的時候,就知道x不是素數了,所以沒有必要往下走了。
3樓:
因為一個數的因數都抄
是成對的,比如
12=1 *12
=2*6
=3*4
=4*3
=6*2
=12*1
比如25
25=1*25
=5*5
=25*1
如果到了他的根號,還沒有一個因子出現,那麼後半部分也不會有因子出現了
4樓:匿名使用者
一個數,不可能被比自己一半大的數整除。
簡單來說,4x4=16,16不可能被比8大的數整除。
這是數學規律,可以減少一半的迴圈次數,大大提高程式效率
5樓:匿名使用者
這個迴圈只會在有數可以把n整除的時候break,中止掉。你的判斷是從2開始的這種判斷素數的方法效率太低了點,你去看看一些基礎教c語言的書裡講判斷素數
c語言中,為什麼可以用平方根判斷素數?請說得詳細點。謝謝! 急!!!
6樓:匿名使用者
你理解錯了。
不是用平方根判斷素數,而是最大取到平方根的整數,可以有效減少迴圈的次數。這個屬於程式的優化。
c語言為什麼判斷素數用sqrt ?拜託各位大神
7樓:mio丶
你好,我們假設一個數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; 明白了吧?
8樓:蔣振華悉卿
k=sqrt(n)
for(i=2;i<=k;i++)
中的k有利於減少無用的迴圈次數。
因為根據數學推理可知,判斷一個數是不內是素數不用都除於所容有小於此數的數的。只要除數小於該數的平方根就足以判斷該數是不是素數了。
這也體現c語言的程式簡潔特點。
怎麼用c語言判斷數是不是素數,怎麼用c語言判斷一個數是不是素數
解釋如下 include stdio.h include math.h main include stdio.h include math.h void main 最佳方案是用素數分佈來處理,在處理大素數時尤其合理,用算術基本定理可能太慢了。如果知道素數分佈相關知識,編出來還是很容易的,不然告訴你也...
c語言程式設計 設計函式用於判斷數是否為素數,如果是素數返回1,否則返回
源程式 以及演算法解釋如下 define crt secure no warnings include int func int m 判斷函式int main 程式執行結果如下 擴充套件資料 輸出1 100之間的所有素數程式如下 include int primenumer int x 定義一個函式...
編輯c語言程式判斷數m是否為素數只能被1和
bai du zhi include int isprime long n int main int argc,char const argv int isprime long n dao 執行內 容 int main else return 0 編一程式,判斷自然數n是否為素數 素數是隻能被1和它...