#include <stdio.h>
#include <stdlib.h>
// 連結リストのノードを定義する構造体
typedef struct Node {
int data; // 素因数を格納
struct Node* next; // 次のノードへのポインタ
} Node;
// 新しいノードを作成する関数
Node* createNode(int value) {
Node
* newNode
= (Node
*)malloc(sizeof(Node
)); if (newNode == NULL) {
}
newNode->data = value;
newNode->next = NULL;
return newNode;
}
int main() {
int n;
Node* head = NULL; // リストの先頭ポインタ
Node* tail = NULL; // リストの末尾ポインタ
if (scanf("%d", &n
) != 1 || n
<= 0) { return 1;
}
int temp = n;
for (int i = 2; i * i <= temp; i++) {
while (temp % i == 0) {
Node* newNode = createNode(i);
if (head == NULL) {
head = newNode; // 最初の要素なら先頭にする
tail = newNode;
} else {
tail->next = newNode; // 末尾に追加
tail = newNode;
}
temp /= i;
}
}
if (temp > 1) {
Node* newNode = createNode(temp);
if (head == NULL) {
head = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
// リストを表示
Node* current = head;
while (current != NULL) {
if (current->next != NULL) {
}
current = current->next;
}
// メモリの解放
current = head;
while (current != NULL) {
Node* nextNode = current->next;
current = nextNode;
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIOmAo+e1kOODquOCueODiOOBruODjuODvOODieOCkuWumue+qeOBmeOCi+ani+mAoOS9kwp0eXBlZGVmIHN0cnVjdCBOb2RlIHsKICAgIGludCBkYXRhOyAgICAgICAgICAgLy8g57Sg5Zug5pWw44KS5qC857SNCiAgICBzdHJ1Y3QgTm9kZSogbmV4dDsgIC8vIOasoeOBruODjuODvOODieOBuOOBruODneOCpOODs+OCvwp9IE5vZGU7CgovLyDmlrDjgZfjgYTjg47jg7zjg4njgpLkvZzmiJDjgZnjgovplqLmlbAKTm9kZSogY3JlYXRlTm9kZShpbnQgdmFsdWUpIHsKICAgIE5vZGUqIG5ld05vZGUgPSAoTm9kZSopbWFsbG9jKHNpemVvZihOb2RlKSk7CiAgICBpZiAobmV3Tm9kZSA9PSBOVUxMKSB7CiAgICAgICAgcHJpbnRmKCLjg6Hjg6Ljg6rnorrkv53jgavlpLHmlZfjgZfjgb7jgZfjgZ/jgIJcbiIpOwogICAgICAgIGV4aXQoMSk7CiAgICB9CiAgICBuZXdOb2RlLT5kYXRhID0gdmFsdWU7CiAgICBuZXdOb2RlLT5uZXh0ID0gTlVMTDsKICAgIHJldHVybiBuZXdOb2RlOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgTm9kZSogaGVhZCA9IE5VTEw7IC8vIOODquOCueODiOOBruWFiOmgreODneOCpOODs+OCvwogICAgTm9kZSogdGFpbCA9IE5VTEw7IC8vIOODquOCueODiOOBruacq+WwvuODneOCpOODs+OCvwoKICAgIHByaW50Zigi5q2j44Gu5pW05pWw44KS5YWl5Yqb44GX44Gm44GP44Gg44GV44GEOiAiKTsKICAgIGlmIChzY2FuZigiJWQiLCAmbikgIT0gMSB8fCBuIDw9IDApIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpbnQgdGVtcCA9IG47CiAgICBmb3IgKGludCBpID0gMjsgaSAqIGkgPD0gdGVtcDsgaSsrKSB7CiAgICAgICAgd2hpbGUgKHRlbXAgJSBpID09IDApIHsKICAgICAgICAgICAgTm9kZSogbmV3Tm9kZSA9IGNyZWF0ZU5vZGUoaSk7CiAgICAgICAgICAgIGlmIChoZWFkID09IE5VTEwpIHsKICAgICAgICAgICAgICAgIGhlYWQgPSBuZXdOb2RlOyAvLyDmnIDliJ3jga7opoHntKDjgarjgonlhYjpoK3jgavjgZnjgosKICAgICAgICAgICAgICAgIHRhaWwgPSBuZXdOb2RlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGFpbC0+bmV4dCA9IG5ld05vZGU7IC8vIOacq+WwvuOBq+i/veWKoAogICAgICAgICAgICAgICAgdGFpbCA9IG5ld05vZGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGVtcCAvPSBpOwogICAgICAgIH0KICAgIH0KICAgIGlmICh0ZW1wID4gMSkgewogICAgICAgIE5vZGUqIG5ld05vZGUgPSBjcmVhdGVOb2RlKHRlbXApOwogICAgICAgIGlmIChoZWFkID09IE5VTEwpIHsKICAgICAgICAgICAgaGVhZCA9IG5ld05vZGU7CiAgICAgICAgICAgIHRhaWwgPSBuZXdOb2RlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRhaWwtPm5leHQgPSBuZXdOb2RlOwogICAgICAgICAgICB0YWlsID0gbmV3Tm9kZTsKICAgICAgICB9CiAgICB9CgogICAgLy8g44Oq44K544OI44KS6KGo56S6CiAgICBwcmludGYoIiVkIOOBrue0oOWboOaVsOWIhuino+e1kOaenDogIiwgbik7CiAgICBOb2RlKiBjdXJyZW50ID0gaGVhZDsKICAgIHdoaWxlIChjdXJyZW50ICE9IE5VTEwpIHsKICAgICAgICBwcmludGYoIiVkIiwgY3VycmVudC0+ZGF0YSk7CiAgICAgICAgaWYgKGN1cnJlbnQtPm5leHQgIT0gTlVMTCkgewogICAgICAgICAgICBwcmludGYoIiAqICIpOwogICAgICAgIH0KICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dDsKICAgIH0KICAgIHByaW50ZigiXG4iKTsKCiAgICAvLyDjg6Hjg6Ljg6rjga7op6PmlL4KICAgIGN1cnJlbnQgPSBoZWFkOwogICAgd2hpbGUgKGN1cnJlbnQgIT0gTlVMTCkgewogICAgICAgIE5vZGUqIG5leHROb2RlID0gY3VycmVudC0+bmV4dDsKICAgICAgICBmcmVlKGN1cnJlbnQpOwogICAgICAgIGN1cnJlbnQgPSBuZXh0Tm9kZTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==