0
点赞
收藏
分享

微信扫一扫

PAT.A1059 Prime Factors

程序小小黑 2022-07-14 阅读 50

PAT.A1059 Prime Factors_i++

题意

给出一个int范围的整数,按照从小到大的顺序输出其分界为质因数(素数)的乘法算式。

样例(可复制)

97532468
//output
97532468=2^2*11*17*101*1291

提供几个易错的数据

1
//output
1=1

7
//output
7=7

8
//output
8=2^3

9
//output
9=3^2

2147483647
//output
2147483647=2147483647

2147483646
//output
2147483646=2*3^2*7*11*31*151*331

注意点

  1. 本题先求出一定范围的素数,再从小到大对每个素数进行判断是否能整除即可

#include<bits/stdc++.h>
using namespace std;

bool isprime(int a){
int sqr=(int)sqrt(1.0*a);
for(int i=2;i<=sqr;i++)
if(a%i==0)return false;
return true;
}
int main(){
int n;
cin>>n;
int prime[100010],j=0;
for(int i=2;i<100010;i++){
if(isprime(i))prime[j++]=i;
}
cout<<n<<"=";
int sum=j;
j=0;
while(n!=1&&j<sum){
int count=0;
while(n%prime[j]==0){
n/=prime[j];
count++;
}
if(count>0){
if(count==1)cout<<prime[j];
else cout<<prime[j]<<"^"<<count;
if(n!=1)cout<<"*";
}
j++;
}
if(j==sum||j==0)cout<<n;
return 0;
}


举报

相关推荐

0 条评论