问题描述
给定正整数 n, 请问有多少个质数是 n 的约数。
输入格式
输入的第一行包含一个整数 n 。
输出格式
输出一个整数, 表示 n 的质数约数个数。
样例输入
396
样例输出
3
样例说明
396 有 2,3,11 三个质数约数。
评测用例规模与约定
运行限制
最大运行时间:10s
最大运行内存: 512M
源码:
import java.util.Scanner;
public class 质因数个数 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long n = scanner.nextLong();
long res = 0;
for (long i = 2; i <= Math.sqrt(n); i++) {//如果写成i*i<=n的话i必须是long类型,因为i*i的结果是int类型,可能永远小于long类型
if(n % i == 0) {
res++;
}
while(n % i == 0) {
n = n / i;
}
}
if(n > 1) {
res++;
}
System.out.println(res);
}
}