poj1365 Prime Land

1270 단어
숫자의 질적 인자 분해.
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() == '
') break; cin >> p; } if (p == 0) break; int cnt = 0; --n; // printf("%d
",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
",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
",pri[0],e[0]); } return 0; }

좋은 웹페이지 즐겨찾기