题目链接:
https://www.nowcoder.com/questionTerminal/e8fb8f89f5d147ec92fd8ecfefe89b0d
解题思路:
n = x * y
如果x <= y
, 那么x
一定在[2, n的1/2次方]
的范围内
即在[2, n的1/2次方]
的范围内, 一定能找到n
的因子
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
int count = 0;
for(int i = 2; i < Math.sqrt(n); i++){
if(n % i == 0){
//n 循环除以 i, 直到 i 不能再被整除,再寻找下一个因子
while(n % i == 0){
n = n / i;
}
count++;
}
}
//最后判断 n 是不是等于 1
//如果 n == 1, 所有因子被找到
//如果 n != 1, n自身也是一个因子, count++
if(n != 1){
count++;
}
System.out.println(count);
}
}
}