质因数分解

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

#include
#include
using namespace std;

int main()
{
    int N;
    while(cin >> N) {
        int res = 0;
        for(int i = 2; i <= sqrt(N); i++) {
            while(N % i == 0) {
                N /= i;
                res++;
            }
            if(N == 1) break;
        }
        cout << res + 1 << endl;
    }
    return 0;
}

x(x≥2)能够被小于根号x的质数分解,所以把x用质数2多次分解后能够保证下次可能整除x的数只能为3。这样就无需判断每个整除的数是否为质数。

你可能感兴趣的:(质因数分解)