#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
int ans[64];
bool zs(int x){
if(x==2||x==3||x==5||x==7){
return true;
}
if((x+1)%6==0||(x-1)%6==0){
int sq=sqrt(x);
for(int i=5;i<=sq;i+=6){
if(x%i==0||x%(i+2)==0){
return false;
}
}
return true;
}
else{
return false;
}
}
int main(){
long long a;
cin>>a;
long long ba=a;
int i=2;
int idx=0;
while(a%10==0){
a/=10;
ans[idx]=2;
idx++;
ans[idx]=5;
idx++;
}
while(true){
if(zs(i)){
while(a%i==0){
a/=i;
ans[idx]=i;
idx++;
if(a==1){
break;
}
}
}
if(a==1){
break;
}
i++;
}
a=1;
for(int i=0;i<idx;i++){
a*=ans[i];
}
if(ba!=a){
cout<<"wrong";
return 0;
}
sort(ans,ans+idx);
for(int i=0;i<idx;i++){
cout<<ans[i]<<endl;
}
cout<<"sum="<<idx;
return 0;
}
史上最快的分解质因数!!!带验证
2024-01-07 08:47:49 By 李凌宇
评论
发表评论
可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。