质因数的个数
质因数的个数
题目描述
求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=22235,共有5个质因数。
输入描述:
可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。
输出描述:
对于每组数据,输出N的质因数的个数。
示例1
输入
[复制](javascript:void(0)😉
120
输出
[复制](javascript:void(0)😉
5
本题思路很明确,就是从2开始不断的看余数是不是0,如果是的话就在结果中加一,再算除法的结果(依然是从2开始算)。这里有一个性能优化的点在于i增长的时候只算到被除数的根号下即可,因为a*b=c,那a和b中至少有一个是小于等于c的根号的。但是这样会有漏算的情况,就是1和被除数本身的情况,所以需要我们最后额外检验一下,如果被除数在出循环是依然大于1,就在结果上加1。另外,如果被除数本身就是质数,那出来的结果就是0,而我们应该输出的是2
import java.util.Scanner;
/**
* @program: OJ
* @description:
* @author: JiaDing
* @create: 2020-03-24 22:12
**/
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
long now=sc.nextLong();
int ans=0;
int i=2;
while(i<=Math.sqrt(now)){
if(now%i==0){
ans++;
now=(now/i);
i=2;
}else{
i++;
}
}
if(ans<=1){
System.out.println(2);
}else{
if(now>1){
ans++;
}
System.out.println(ans);
}
}
}
}

浙公网安备 33010602011771号