【題解】ZeroJudge a010: 因數分解

【題目敘述】https://zerojudge.tw/ShowProblem?problemid=a010

#include <iostream>
using namespace std;

int n;
int b, p;

int main()
{
    while (cin >> n) {
        for (b = 2; b <= n; b++) {
            p = 0;
            while (n % b == 0) {
                p++;
                n = n / b;
            }
            if (p > 1) {
                cout << b << "^" << p;
                if (n > 1)
                    cout << " * ";
            }   
            else if (p == 1) {
                cout << b;
                if (n > 1)
                    cout << " * ";
            }

            if (n == 1) {
                cout << "\n";
                break;
            }
        }
    }
    return 0;
}

Python code (credit: Amy Chou)

import sys

lines = sys.stdin.readlines()
for line in lines:
    n = int(line)
    ans = ""
    first = True
    for b in range(2, n+1):
        p = 0
        while n % b == 0:
            p += 1
            n //= b
        if p:
            if first:
                first = False
            else:
                ans += " * "
                
            if p > 1:
                ans += f"{b}^{p}"
            else:
                ans += f"{b}"
                
        if n == 1:
            break;
    print(ans)
            
分享本文 Share with friends