山﨑愛一のホームページ

Kaprekar

repunitとKaprekar数

n桁の数を自乗し、その数の右側から n桁の数と,左側から n 又は n-1桁の数を足すと元の数に戻る様な数を Kaprekar数という。
例えば、2972=88209, 88+209=297 なので 297 は Kaprekar数である。

Kaprekar数は repunit とも関係がある。n桁の数 X が Kaprekar数であるための条件は X2-X が 9Rn = 10n-1 の倍数になることである。

Kaprekar数を見つけるプログラム

pari/gpで書かれています

{
 for(d=1,59,
   f=factor(10^d-1);
   k=matsize(f)[1];
   l=[];
   for(i=0,2^k-1,
     x=lift(chinese(vector(k,j,Mod(bittest(i,j-1),f[j,1]^f[j,2]))));
     if(x==0,x=10^d-1);
     if(x>=10^(d-1),l=concat(l,[x]))
   );
   l=vecsort(l);
   for(i=1,#l,print(l[i]))
 )
}

Kaprekar数のリスト

10桁以下のKaprekar数