快速素因子分解

#include<bits/stdc++.h>
using namespace std;
long long n;
int main() {
    while(cin>>n){
        //求素因子分解,加速原理,所有的数,如果有比sqrt(n)大的素因子,最多只有1种,1个
        long long s=0,t=2,sq=(long long)sqrt(n);
        while(n>1){
            while(n%t==0){
                s++;
                n=n/t;
            }
            t++;
            if(t>sq) break;
        }
        if(n>1) s++;
        cout<<s<<endl;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/MorrowWind/p/13056568.html