【題目敘述】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)