质因数的个数

Posted 酒徒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了质因数的个数相关的知识,希望对你有一定的参考价值。

题目描述

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

输入描述:

可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。

输出描述:

对于每组数据,输出N的质因数的个数。

分析:

1.一个数a的质因数肯定小于sqrt(a),否则两个大于sqrt(a)的书相乘肯定大于a;
2.从2开始试探是否可以整除,如果可以则计数器count++;在这里要注意的是
    我们并不用判断i是否是质数,因为它肯定是一个质数。因为我们是从2开始
    试探的,假设出现一个i不是质数,其实在i之前肯定该i肯定被小的质数分解了
3. 如果最后n是一个无法分解的大于1(1不是质数)的质数,count++;
#include <iostream>
using namespace std;

int main(){
    long N;
    while(cin >> N){
        int count = 0;
        for(int i = 2; i * i < N; i++){
            while(N % i == 0){
                count++;
                N /= i;
            }
        }
        if(N >= 2) count++;
        cout << count << endl;
    }
    return 0;
}

以上是关于质因数的个数的主要内容,如果未能解决你的问题,请参考以下文章

线性筛因数个数

[nowcoder]因数个数和

LeetCode数论题目总结

质因数的个数

c语言质因数分解题目怎么做

经典代码