什么是质因数分解
算术基本定理:
任何一个大于1的自然数,如果它是质数,那它最大的质因数就是它自己,如果它是合数,那么它一定可以拆成质数 × 质数,并且它最小的第一个因子一定是质数。
质因数个数:
给定正整数 n,请问有多少个质数是 n的约数。
输入格式
输入的第一行包含一个整数 n。
输出格式
输出一个整数,表示 n的质数约数个数。
数据范围
对于 30%的评测用例,1≤n≤10000。
对于 60%的评测用例,1≤n≤109。
对于所有评测用例,1≤n≤1016。
输入样例
396
输出样例
3
解题代码(时间复杂度为O(根号n))
import java.util.Scanner;
public class Main {
static int num;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
long n = scan.nextLong();
long l= (long) Math.sqrt(n);
for (int i = 2; i <= l ; i++) {
if (n%i==0){
num++;
while (n%i==0){//直到不能除以当前质数因此为止,除完的这个质数,一定不会出现在后面的质数因子中
n=n/i;
}
if (n==1){
break;
}
}
}
num=n==1?num:num+1;//n=1说明该数已经完全拆成了几个质因子的乘积,(可能被其他质因子除过的自己也是质数,此时自己的值小于最初的根号n)
//如果不为1说明该数被拆成了比自己的根号要大的质数,因此要加上它自己的这个质数因子
System.out.println(num);
}
}