题解 | 质因数的个数

质因数的个数

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

人类分解质因数的方法中最为常见的是辗转相除法(Euclid算法)。通过不断除以能够整除原数的质数,原数可以被不断缩小,进而更容易通过目视得到更多的其他质因数。

对于在代码中的实现,考虑从2开始从小到大寻找整除原数的数;如果能够整除则立即整除。之所以不用确定是否是质数,是因为如果这个待检测的数为合数,则这个数的所有质因数一定已经在先前的辗转相除中完成(如,在寻找到的时候显然已经将全部除掉,因此此时已经无法被整除)。辗转相除的最终结果一定也是质数,这可以看作是再除以这个质数后得到结果;此时终止寻找即可。

#include <bits/stdc++.h>
#define _CRT_SECURE_NO_DEPRECATE

int main() {
    int N;
    while (std::cin >> N) {
        int primeFactor = 2, result = 0;
        while (N != 1) {
            if (!(N % primeFactor)) {
                N /= primeFactor;
                result++;
            } else primeFactor++;
        }
        std::cout << result << std::endl;
    }
}
牛客题库练习笔记 文章被收录于专栏

有的时候心血来潮会来做题。做题就会有笔记。

全部评论

相关推荐

董春花_:真诚无罪,别听评论区那个清华的。按他的逻辑,你有分寸人觉得你是不想来,你积极热情人觉得你太想来,你好骗人就可你养鱼,你不好骗人觉得你服从性不高,合着**做啥都白扯。保持谦逊礼貌与对offer的积极性不才是最正常,也正确的做法么?招聘方的错强加到应聘者身上,***何不食肉糜。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务