void change(int n, int *a, int *b)
{
int s[32], i=2, c=0;
*a = 1; *b = 1;
while (n > 1) {
if (n % i == 0) {
if (((c==0)?0:s[c-1]) == i) {
*a *= i; s[--c] = 0;
} else {
s[c++] = i;
}
n /= i;
continue;
} else {
i++;
}
}
for (i=0; i<c; i++) *b *= s[i];
}

これでやってみそ