0
我看到許多寫入因式分解邏輯這樣
1.使用I = 2
2.起始I * I < =數條件循環方法
for(int i = 2; i*i <= number; i++){
if(number % i == 0)
// some code
}
我的疑問是: 使用i * i的需要是什麼< =數字。他在優化什麼?
我看到許多寫入因式分解邏輯這樣
1.使用I = 2
2.起始I * I < =數條件循環方法
for(int i = 2; i*i <= number; i++){
if(number % i == 0)
// some code
}
我的疑問是: 使用i * i的需要是什麼< =數字。他在優化什麼?
數字的因素是成對的。例如,數30
具有因素1
,2
,3
,5
,6
,10
,15
和30
:
1 2 3 5
| | | |
30 15 10 6
所以你並不需要計算所有的因素,只是其中的前半部分,並通過簡單的劃分操作獲得另一半。
+1因此,我們可以通過僅使用upto sqrt(number)來消除所有其他除數(因子對)。在某些情況下,n仍然是一個素數。例58.我們只迭代到7,現在數字是29,循環退出。如果循環退出後,數字仍然大於1(此處爲29> 1)。我們應該關注這個數字,那必須是一個主角。 – Sparrow