範例程式碼 uva516
//uva516
#include <iostream>
using namespace std;
void factor(int n) {
int p[32] = {}, e[32] = {}, cnt = 0;
for(int i = 2; i * i <= n; ++i) {
if(!(n % i)) {
p[cnt] = i;
for(;!(n % i); n /= i)
++e[cnt];
++cnt;
}
}
if(n != 1) {
p[cnt] = n;
e[cnt] = 1;
++cnt;
}
cout << p[cnt - 1] << " " << e[cnt - 1];
for(int i = cnt - 2; i >= 0; --i)
cout << " " << p[i] << " " << e[i];
cout << endl;
}
int main()
{
int p, e;
while(cin >> p && p) {
char ch;
cin.get(ch);
cin >> e;
int x;
for(x = 1; e; --e)
x *= p;
while(cin.get(ch) && ch != '\n') {
cin >> p >> e;
for(; e; --e)
x *= p;
}
factor(x - 1);
}
return 0;
}