■ もず氏
答えはやはり、2001しかありません。
以下、簡単な証明です。
(証明)
nの下4桁をABCDとします。
2001は奇数なので、nも奇数。つまり、Dは1,3,5,7,9のいずれかです。
しかし、奇数乗して下一桁が1になりうるのは D=1 のときだけです。
次に、n = 1 + 10C +(100の倍数) とおくと、
n^n = 1 + n*10C +(100の倍数)
= 1 + 10C +(100の倍数)
となり、C=0 がわかります。
さらに、n = 1 + 100*AB +(10000の倍数) とおくと、
n^n = 1 + n*100*AB +(10000の倍数)
= 1 + 100*AB +(10000の倍数)
となり、AB = 20 がいえます。
(証明終)
簡単なというより簡潔な証明ですね。
蛇足ながら、上記証明には二項定理が使われています>訪問諸氏
ちなみに作者はまずプログラムを書いて検証したのでした。
/*
* m = n % 10000 (m ^ n % 10000 = n ^ n % 10000)
* m ^ g % 10000 = 1
* m ^ a % 10000 = 2001
* n = 10000 * x + m = g * y + a
*/
#include <stdio.h>
void main()
{
long m, g, a, p;
for (m = 0; m < 10000; m++) {
if (m % 2 == 0 || m % 5 == 0) continue;
for (p = 1, g = 1; ; g++) if ((p = p * m % 10000) == 1) break;
for (p = 1, a = 1; a < g; a++) if ((p = p * m % 10000) == 2001) break;
if (a == g) continue;
if (10000 % g != 0 ) printf("!\n");
else if ((m - a) % g != 0) continue;
else printf("m = %ld\n", m);
}
}
|