您的位置:首页 > 其它

【PAT甲级】1059. Prime Factors (25)

2016-11-03 14:45 579 查看
#include <stdio.h>
#include <vector>
using namespace std;

bool isPrime(int a);
int main(int argc, char *argv[]) {
long int in;
scanf("%ld", &in);
if (in == 1) {
printf("1=1\n");
return 0;
}
long int a = in;
vector<int> fac;
vector<int> exp;
long int i = 2;
while (a > 1) {
if (a % i == 0 && isPrime(i)) {
fac.push_back(i);
int k = 0;
while (a % i == 0) {
a = a / i;
k++;
}
exp.push_back(k);
}
i++;
}
printf("%ld=", in);
for (int i = 0; i < fac.size(); i++) {
printf("%d", fac[i]);
if (exp[i] > 1) {
printf("^%d", exp[i]);
}
if (i < fac.size() - 1) printf("*");
}
printf("\n");

return 0;
}
bool isPrime(int a) {
if (a == 2) return true;
for (int i = 2; i <= a / 2 + 1; i++) {
if (a % i == 0)
return false;
}
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: