因式分解法-逻辑

method of factorization- logic

我见过很多这样写分解逻辑的
1.从i = 2
开始 2. 使用 i*i <= number 循环条件

for(int i = 2; i*i <= number; i++){
 if(number % i == 0)
   // some code
}

我的疑问是: 使用 i*i<=number 需要什么。他在优化什么?

一个数的因数是成对的。例如,数字 30 有因子 123561015,以及 30

1  2  3  5
|  |  |  |
30 15 10 6

所以你不需要计算所有因数,只需要计算前半部分,通过简单的除法运算得到另一半。

相关问题: Efficiently getting all divisors of a given number.