【蓝桥杯】算法提高 分解质因数

问题描述
  给定一个正整数n,尝试对其分解质因数
输入格式
  仅一行,一个正整数,表示待分解的质因数
 
 
解题:一不小心就容易超时
#include <iostream>
#include <vector>
#include <cstring>
#include <stdio.h>
#include <cmath>
#include <queue>
#define inf 0x3f3f3f3f
using namespace std;
bool fun(long long int a){
    for(long long int i=2;i<=sqrt(a);i++){
        if(a%i==0)return false;
    }
    return true;
}
int main(){
    //freopen("in.txt","r",stdin);
    long long int n;
    cin>>n;
    if(fun(n)){
        cout<<n;
        return 0;
    } 
        for(long long int i = 2;i<=n;i++){
            while(n%i==0){
                cout<<i<<" ";
                n = n/i;
            }
            if(fun(n)){
                cout<<n;
                return 0;
            }
        }
}

 

posted @ 2020-05-06 15:17  清谗  阅读(356)  评论(0编辑  收藏  举报