牛客网-计算机研究生历年上机

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhq9695/article/details/82056005

目录

质因数的个数


质因数的个数

题目描述

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

输入描述:

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

输出描述:

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

输入

120

输出

5
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<iomanip>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<deque>
#include<algorithm>
using namespace std;

int n,cnt;

int main(){
//  freopen("input.txt","r",stdin);
//  freopen("output.txt","w",stdout);

  while(cin>>n){
    cnt=0;
    int i=2;
    double sqr = sqrt(n);
    while(n!=1){
      if(n%i==0){ // 无需再判断是否是质数
        cnt++;    // 例如,能被4整除的数
        n/=i;     // 一定在i=2的时候被整除过了
      }
      else {
        i++;
        if(i>=sqr){ // 若输入的n本身为质数
          cnt++;    // 则因子只有1和n,大于等于sqrt(n)时,cnt+=1退出即可
          break;
        }
      }
    }
    cout<<cnt<<endl;
  }

  return 0;
}






猜你喜欢

转载自blog.csdn.net/zhq9695/article/details/82056005