#include <stdio.h>
// 課題3で作成した再帰関数をそのまま使用(省略)
int rec(int n) {
// ... 課題3のコード
if (n == 0) return 3;
if (n == 1) return 0;
if (n == 2) return 2;
return rec(n - 2) + rec(n - 3);
}
int main(void) {
// 課題3と同じく n=0 から n=50 までループ (列挙する項の範囲は課題3に準ずる)
for (int n = 0; n <= 50; n++) {
// n=0 のときは無視 (問題の指示)
if (n == 0) {
continue;
}
// a_n の値を計算
int an = rec(n);
// 条件判定: a_n が n で割り切れるか (an % n == 0)
if (an % n == 0) {
printf("n = %d (a%d = %d) -> 割り切れます\n", n
, n
, an
); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyDoqrLpoYwz44Gn5L2c5oiQ44GX44Gf5YaN5biw6Zai5pWw44KS44Gd44Gu44G+44G+5L2/55So77yI55yB55Wl77yJCmludCByZWMoaW50IG4pIHsKICAgIC8vIC4uLiDoqrLpoYwz44Gu44Kz44O844OJCiAgICBpZiAobiA9PSAwKSByZXR1cm4gMzsgCiAgICBpZiAobiA9PSAxKSByZXR1cm4gMDsKICAgIGlmIChuID09IDIpIHJldHVybiAyOwogICAgcmV0dXJuIHJlYyhuIC0gMikgKyByZWMobiAtIDMpOwp9CgppbnQgbWFpbih2b2lkKSB7CiAgICAvLyDoqrLpoYwz44Go5ZCM44GY44GPIG49MCDjgYvjgokgbj01MCDjgb7jgafjg6vjg7zjg5cgKOWIl+aMmeOBmeOCi+mgheOBruevhOWbsuOBr+iqsumhjDPjgavmupbjgZrjgospCiAgICBmb3IgKGludCBuID0gMDsgbiA8PSA1MDsgbisrKSB7CiAgICAgICAgCiAgICAgICAgLy8gbj0wIOOBruOBqOOBjeOBr+eEoeimliAo5ZWP6aGM44Gu5oyH56S6KQogICAgICAgIGlmIChuID09IDApIHsKICAgICAgICAgICAgY29udGludWU7IAogICAgICAgIH0KCiAgICAgICAgLy8gYV9uIOOBruWApOOCkuioiOeulwogICAgICAgIGludCBhbiA9IHJlYyhuKTsgCgogICAgICAgIC8vIOadoeS7tuWIpOWumjogYV9uIOOBjCBuIOOBp+WJsuOCiuWIh+OCjOOCi+OBiyAoYW4gJSBuID09IDApCiAgICAgICAgaWYgKGFuICUgbiA9PSAwKSB7CiAgICAgICAgICAgIHByaW50ZigibiA9ICVkIChhJWQgPSAlZCkgLT4g5Ymy44KK5YiH44KM44G+44GZXG4iLCBuLCBuLCBhbik7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwp9Cgo=