质因数的个数

末鹿安然 提交于 2020-02-05 02:42:21

题目描述

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

输入描述:

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

输出描述:

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

分析:

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

  1. 如果最后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;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!