试题 算法提高 分解质因数

卡点:

如果这个数是一个很大的质数就会超时,因此需要判断,如果直接遍历,会卡40%的样例。

代码:

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
using namespace std;
typedef long long ll;
const int maxn = 100;
bool judge(ll n){
    for(int i=2;i<=sqrt(n);i++){
        if(n%i==0)
            return false;
    }
    return true;
}
int main(){
    ll n;
    cin>>n;
    ll m = n;
    for(int i=2;i<=n;i++){
        while(n%i==0){
            cout<<i<<" ";
            n = n/i;
        }
        if(judge(n)&&n!=1){
            cout<<n<<endl;
            break; 
        }
    }
    cout<<endl;
    return 0;
} 

 

posted @ 2020-10-13 00:47  sqsq  阅读(186)  评论(0编辑  收藏  举报