美文网首页
质数因数的个数

质数因数的个数

作者: hdchieh | 来源:发表于2019-03-19 12:56 被阅读0次

    求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。


    解题思路

    1. 质因数的遍历范围是2到sqrt(n),这样时间复杂度大大降低;
    2. 因为是从小到大的顺序找的所以肯定都是质因数(无需再用函数判断),否则在之前就已经在while循环里被除掉了。小于它的所有数已经被除掉了,所以如果可以整除就一定是质数
    3. 当每找到一个质因数以后,立刻整除掉它,紧接着增加质因数个数。
    4. 如果遍历到了sqrt(n)时还是大于1,则肯定还剩最后一个质因数。比如计算120的质因数个数时,最后计算到n=5,2<sqrt(5)<3,而之前i=3(因为120=22235),所以i循环已结束,最后剩下的那个质因数就是5。

    原文


    #include<stdio.h>
    int main(){
        int n;
        int count=0;
        scanf("%d",&n);
        for(int i=2;i<=sqrt(n);i++){
            while(n%i==0){
                count++;
                n/=i;
            }
        }
        if(n!=1) count++;//此时n必为大于sqrt(n)的质数
        printf("%d\n",count);
    

    相关文章

      网友评论

          本文标题:质数因数的个数

          本文链接:https://www.haomeiwen.com/subject/obksmqtx.html