#include <stdio.h>
void factorize(int num)
{
for (int i = 1; i <= num; i++)
if (num % i == 0)
}
void findFactors(int num, int factors[], int index, int current)
{
if (num == 1) {
for (int i = 0; i < index; 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+Cgp2b2lkIGZhY3Rvcml6ZShpbnQgbnVtKQp7CiAgICBwcmludGYoIuWboOaVsOWIhuino+e1kOaenDogJWQgPSAiLCBudW0pOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbnVtOyBpKyspCiAgICAgICAgaWYgKG51bSAlIGkgPT0gMCkKICAgICAgICAgICAgcHJpbnRmKCIlZCAiLCBpKTsKICAgIHByaW50ZigiXG4iKTsKfQoKdm9pZCBmaW5kRmFjdG9ycyhpbnQgbnVtLCBpbnQgZmFjdG9yc1tdLCBpbnQgaW5kZXgsIGludCBjdXJyZW50KQp7CiAgICBpZiAobnVtID09IDEpIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGluZGV4OyBpKyspCiAgICAgICAgICAgIHByaW50ZigiJWQgIiwgZmFjdG9yc1tpXSk7CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZvciAoaW50IGkgPSBjdXJyZW50OyBpIDw9IG51bTsgaSsrKSB7CiAgICAgICAgaWYgKG51bSAlIGkgPT0gMCkgewogICAgICAgICAgICBmYWN0b3JzW2luZGV4XSA9IGk7CiAgICAgICAgICAgIGZpbmRGYWN0b3JzKG51bSAvIGksIGZhY3RvcnMsIGluZGV4ICsgMSwgaSk7CiAgICAgICAgfQogICAgfQp9CgojZGVmaW5lIE1BWF9JTlNVICAoMTAwMCkKaW50IG1haW4oKQp7CiAgICBpbnQgbnVtYmVyOwogICAgcHJpbnRmKCLlm6DmlbDliIbop6PjgZfjgZ/jgYTmlbDjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYRcbiIpOwogICAgcHJpbnRmKCIo44Gf44Gg44GX57Sg5Zug5pWw44Gu5pyA5aSn5pWw44GMJWTlgIvjgpLotoXjgYjjgovjgajjgZPjga7jg5fjg63jgrDjg6njg6Djga/jgq/jg6njg4Pjgrfjg6XjgZfjgb7jgZkpOiAiLCBNQVhfSU5TVSk7CiAgICBzY2FuZigiJWQiLCAmbnVtYmVyKTsKICAgIHByaW50Zigi5Zug5pWw5YiG6Kej57WE44G/5ZCI44KP44GbOlxuIik7CiAgICBpbnQgZmFjdG9yc1tNQVhfSU5TVV07ICAgICAgLy8g5Luu5a6a44GV44KM44KL5Zug5pWw44Gu5pyA5aSn5pWwCiAgICBmaW5kRmFjdG9ycyhudW1iZXIsIGZhY3RvcnMsIDAsIDIpOwogICAgcmV0dXJuIDA7Cn0K