一个正整数可以分解成一个或多个数组的积。例如36=2*2*3*3,即包含2和3两个因子。NowCoder最近在研究因子个数的分布规律,现在给出一系列正整数,他希望你开发一个程序输出每个正整数的因子个数。
输入描述:
输入包括多组数据。 每组数据仅有一个整数n (2≤n≤100000)。输出描述:
对应每个整数,输出其因子个数,每个结果占一行。示例1
输入
30<br/>26<br/>20输出
3<br/>2<br/>2
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while (sc.hasNext()){
int num=0;
int n=sc.nextInt();
for (int i = 2; i <=Math.sqrt(n) ; i++) {
if (n%i==0){
num++;
while (n%i==0){
n=n/i;
}
}
}
if (n!=1){
num++;
}
System.out.println(num);
}
}
}
【解题思路】:从最小因子2到数字的最大因子数(数字的平方根)开始判断是否能够取余
可以则循环取余直到取余不为0,因子个数+1;否则使用下一个因子计算;最终整除了各个因子数之后剩余的数字不为1则本身也是一个因子,因此因子数+1