こんなんで。
#include <stdio.h>
int main()
{
int f[11] = { 0 };
int i, n, c;
scanf("%d", &n);
for (i = 2, c = 0; n > 1; i++) {
if (n % i == 0) {
do
n /= i;
while (n % i == 0);
f[c] = i;
c++;
}
}
printf("%d\n\n",c);
for (i = 0; f[i]; i++)
printf("%d\n", f[i]);
return 0;
}
こんなんでいいかな?
#include <stdio.h>
int main()
{
int f[9];
int i, n, c = 0;
scanf("%d", &n);
if (n % 2 == 0) {
do
n /= 2;
while (n % 2 == 0);
f[c] = 2;
c++;
}
if (n % 3 == 0) {
do
n /= 3;
while (n % 3 == 0);
f[c] = 3;
c++;
}
// 超過するのを忘れていたので、もうちょっと大きな型にしてください。
for (i = 5; (unsigned)i * i <= n; i += 4) {
if (n % i == 0) {
do
n /= i;
while (n % i == 0);
f[c] = i;
c++;
}
i += 2;
if (n % i == 0) {
do
n /= i;
while (n % i == 0);
f[c] = i;
c++;
}
}
if (n > 1) {
f[c] = n;
c++;
}
printf("%d\n\n", c);
for (i = 0; i < c; i++)
printf("%d\n", f[i]);
return 0;
}