当前位置: 代码迷 >> 综合 >> PAT A1059 Prime Factors 质因数
  详细解决方案

PAT A1059 Prime Factors 质因数

热度:89   发布时间:2023-11-25 15:56:21.0
#include <iostream>
using namespace std;
#include <cmath>
const int maxn = 1000010;
struct factor{
    int m = 0,cnt = 0;
};	
factor p[maxn];
int main()
{
    	int k = 2;//第一个素数int x; int e = 1;//用于计算累积乘的结果,来控制*号的输出cin >> x;int t = x;//找质因子的过程会把改变x,这里备份一个用于输出格式if(x == 1){
    //如果为输入为1直接结束程序cout << x << "=" << 1;return 0; }while(x > 1){
    //质因数if (x % k == 0){
    x = x / k;p[k].m = k;p[k].cnt++; }else k++;}cout << t << "=";//以下为控制输出格式for(int i = 0; i < maxn; i++){
    if(p[i].cnt != 0){
    e =pow(p[i].m, p[i].cnt) * e;if(e < t){
    if(p[i].cnt > 1) cout << p[i].m << "^" << p[i].cnt << "*";else if(p[i].cnt == 1) cout << p[i].m << "*";}else {
    if(p[i].cnt > 1) cout << p[i].m << "^" << p[i].cnt;else if(p[i].cnt == 1) cout << p[i].m;}}}return 0;
}