因式分解法-逻辑
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
有因子 1
、2
、3
、5
、6
、10
、15
,以及 30
:
1 2 3 5
| | | |
30 15 10 6
所以你不需要计算所有因数,只需要计算前半部分,通过简单的除法运算得到另一半。
相关问题: Efficiently getting all divisors of a given number.
我见过很多这样写分解逻辑的
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
有因子 1
、2
、3
、5
、6
、10
、15
,以及 30
:
1 2 3 5
| | | |
30 15 10 6
所以你不需要计算所有因数,只需要计算前半部分,通过简单的除法运算得到另一半。
相关问题: Efficiently getting all divisors of a given number.