【蓝桥杯】算法提高 分解质因数
问题描述
给定一个正整数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; } } }