zoukankan      html  css  js  c++  java
  • 质因数的个数

    题目描述

    求正整数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肯定被小的质数分解了
    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;
    }
    
  • 相关阅读:
    排序算法——选择排序
    poj1906
    poj1496
    poj1244
    poj1183
    poj1806
    !!!舒尔茨自律神经训练法
    Google Analytics的能与不能
    乔布斯最伟大的贡献是什么
    冥想呼吸
  • 原文地址:https://www.cnblogs.com/zhuobo/p/10199932.html
Copyright © 2011-2022 走看看