现在的位置: 首页 > 综合 > 正文

poj1365 Prime Land

2018年12月20日 ⁄ 综合 ⁄ 共 572字 ⁄ 字号 评论关闭

数字的质因子分解。。

Code:

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;

typedef long long LL;
int main() {
    LL n, p, t, i;
    int pri[100], e[100];
    while (true) {
        cin >> p;
        n = 1;
        while (0 != p) {
            cin >> t;
            n *= pow(p, t);
            if (getchar() == '\n') break;
            cin >> p;
        }
        if (p == 0) break;
        int cnt = 0;
        --n;
//        printf("%d\n",n);
        int k = 2;
        memset(e, 0, sizeof(e));
        while (k <=sqrt(n)) {
            if (n % k == 0) {
                pri[cnt] = k;
                while (n % k == 0) {
                    e[cnt]++;
                    n /= k;
                }
//                printf("%d %d\n",pri[cnt], e[cnt]);
                cnt++;
            }
            if (k != 2) k += 2;
            else k++;
        }
        if(n>1)
        {
            pri[cnt] = n; e[cnt]++;
            cnt++;
        }
        for (i = cnt-1; i >0; i--)
            printf("%d %d ", pri[i], e[i]);
        printf("%d %d\n",pri[0],e[0]);
    }
    return 0;
}

抱歉!评论已关闭.