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

来源:互联网 发布:c window 编程 编辑:程序博客网 时间:2024/05/21 17:24
#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;}
0 0
原创粉丝点击