欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

PAT1059PrimeFactors素数表

时间:2023-06-02

#include #include #include using namespace std;vectorprime(50000,1);int main() { for(int i=2;i*i<50000;i++) for(int j=2;j*i<50000;j++) prime[j*i]=0; //50000内任意可以分解成j*i的数都不是素数,而且其中一个素数i必定小于sqrt(50000) long int a; scanf("%ld",&a); printf("%ld=",a); if(a==1)printf("1"); bool state=false; for(int i=2;i<50000&&a>2;i++){ int cnt=0,flag=0; while(prime[i]==1&&a%i==0){ //从小到大可以分解出因数i,i可能不止一个,一直循环除i cnt++; a=a/i; flag=1; } if(flag){ if(state)printf("*"); //第二个因数开始带* printf("%d",i); state=true; } if(cnt>=2)printf("^%d",cnt); } if(a>1)printf("%s%ld",state?"*":"",a); //state表示可以分解,a是最后一个质数因子,否则直接打印n system("pause"); return 0;}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。