#include<stdio.h>
#include<vector>
using namespace std;
struct prime{
int num;
int times;
};
bool Prime(long n){
int i;
for (i = 2; i <= n / 2; i++)
if (n % i == 0)
break;
if (i>n / 2)
return true;
else return false;
}
long NextPrime(long num){
long i = num+1,j;
while (1){
if (Prime(i))
break;
i++;
}
return i;
}
int main(){
long num,n,count = 0;
struct prime node;
scanf("%d", &num);
long i;
vector<struct prime> s;
n = num;
if (Prime(n)){
node.num = n;
node.times = 1;
s.push_back(node);
}
else {
for (i = 2; i <= n / 2 && num > 1; i = NextPrime(i)){
node.num = i;
node.times = 0;
while (!(num % i)){
num = num / i;
node.times++;
}
if (node.times)
s.push_back(node);
}
}
vector<struct prime>::iterator k;
printf("%d=", n);
for (k = s.begin(); k != s.end(); k++){
if ((*k).times == 1)
printf("%d", (*k).num);
else printf("%d^%d", (*k).num, (*k).times);
if (k + 1 != s.end())
printf("*");
}
putchar('\n');
return 0;
}
Pat 1059
最新推荐文章于 2025-08-12 09:57:02 发布