您的位置:首页 > 其它

PAT2-07 素因子分解

2014-05-18 21:28 183 查看
用素数筛找素数,3000以内的素数够用了

#include<iostream>
#include<vector>
using namespace std;

const int n=3000;
vector<bool>isp(n,true);
int makeprime(){
for(int i=2;i<n;++i)
if(isp[i])
for(int j=2;i*j<n;++j)
isp[i*j]=false;
}
int getprime(){
static int pos=2;
while(!isp[pos++]);
return pos-1;
}
int main(){
makeprime();
int num;cin>>num;
cout<<num<<'=';
if(num==1)    cout<<1;
//除num直到num为1
for(int k=getprime();num>1;k=getprime()){
int exp=0;
while(num%k==0){num/=k;++exp;}
if(exp){
static bool first_time=true;
if(!first_time)cout<<'*';
else first_time=false;
cout<<k;
if(exp>1)cout<<'^'<<exp;
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: