#include <stdio.h>
void findFactors(int num, int factors[], int index, int current)
{
if (num == 1) {
for (int i = 0; i < index && index > 1; i++) {
}
return;
}
for (int i = current; i <= num; i++) {
if (num % i == 0) {
factors[index] = i;
findFactors(num / i, factors, index + 1, i);
}
}
}
#define MAX_INSU (1000) // 仮定される因数の最大数
int main()
{
int number;
printf("因数分解したい数を入力してください\n"); printf("(ただし素因数の最大数が%d個を超えるとこのプログラムはクラッシュします): ", MAX_INSU
); int factors[MAX_INSU];
findFactors(number, factors, 0, 2);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIGZpbmRGYWN0b3JzKGludCBudW0sIGludCBmYWN0b3JzW10sIGludCBpbmRleCwgaW50IGN1cnJlbnQpCnsKICAgIGlmIChudW0gPT0gMSkgewogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXggJiYgaW5kZXggPiAxOyBpKyspIHsKICAgICAgICAgICAgcHJpbnRmKCIlZCAiLCBmYWN0b3JzW2ldKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZvciAoaW50IGkgPSBjdXJyZW50OyBpIDw9IG51bTsgaSsrKSB7CiAgICAgICAgaWYgKG51bSAlIGkgPT0gMCkgewogICAgICAgICAgICBmYWN0b3JzW2luZGV4XSA9IGk7CiAgICAgICAgICAgIGZpbmRGYWN0b3JzKG51bSAvIGksIGZhY3RvcnMsIGluZGV4ICsgMSwgaSk7CiAgICAgICAgfQogICAgfQp9CgojZGVmaW5lIE1BWF9JTlNVICAoMTAwMCkgICAgICAgIC8vIOS7ruWumuOBleOCjOOCi+WboOaVsOOBruacgOWkp+aVsAppbnQgbWFpbigpCnsKICAgIGludCBudW1iZXI7CiAgICBwcmludGYoIuWboOaVsOWIhuino+OBl+OBn+OBhOaVsOOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhFxuIik7CiAgICBwcmludGYoIijjgZ/jgaDjgZfntKDlm6DmlbDjga7mnIDlpKfmlbDjgYwlZOWAi+OCkui2heOBiOOCi+OBqOOBk+OBruODl+ODreOCsOODqeODoOOBr+OCr+ODqeODg+OCt+ODpeOBl+OBvuOBmSk6ICIsIE1BWF9JTlNVKTsKICAgIHNjYW5mKCIlZCIsICZudW1iZXIpOwogICAgcHJpbnRmKCLlm6DmlbDliIbop6PntYTjgb/lkIjjgo/jgZs6XG4iKTsKICAgIGludCBmYWN0b3JzW01BWF9JTlNVXTsKICAgIGZpbmRGYWN0b3JzKG51bWJlciwgZmFjdG9ycywgMCwgMik7CiAgICByZXR1cm4gMDsKfQo=