题解 | #质因数的个数#

质因数的个数

http://www.nowcoder.com/practice/20426b85f7fc4ba8b0844cc04807fbd9

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int n;
    int ans = 0;
    while(cin >> n)
    {
        // n中最多只包含一个大于sqrt(n)的质因子
        for(int i = 2; i <= n / i; i ++)
        {
            // n中不包含2到i-1的质因子,且i中也包含2到i-1的质因子
            // 因此满足该条件时, i必然是质数
            if(n % i == 0) 
            {
                // 试除法
                while (n % i == 0)
                {
                    n /= i;
                    ans ++;
                }          
            }
        }
        // 单独处理, 加1即可
        if(n > 1) ans ++;
        cout << ans << endl;
    }

    return 0;
}
全部评论

相关推荐

头像
04-09 14:29
Java
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务