從 2 開始一個一個除。
Start dividing from 2.
ZeroJudge Link (Zh)
#include <stdio.h>
main() {
int input;
while (scanf("%d", &input) != EOF) {
int i, j = 0;
int buffer[100];
while (input != 1) {
for (i = 2; i <= input; i++) {
if (input % i == 0) {
input /= i;
buffer[j++] = i;
break;
}
}
}
if (j == 0) printf("1");
else {
int k;
for (k = 0; k < j; k++) {
int count = 1;
while ((k + count) < j && buffer[k] == buffer[k+count])
count++;
if (count == 1) printf("%d", buffer[k]);
else printf("%d^%d", buffer[k], count);
k += count - 1;
if ((k + 1) < j) printf(" * ");
}
}
printf("\n");
}
return 0;
}