在1949年印度數學家 D.R Kaprekar發現了一種數字:Self-numbers。對任何正整數 n ,定義d(n)為n加上其各數字的和。例如:d(75)=75+7+5=87。給任一個正整數 n 當作一個起始點,你可以產生無限的數字序列:n, d(n),
d(d(n)), d(d(d(n))),…例如:如果你從33開始,下一個數字是33+3+3=39,再下一個數字是39+3+9=51,再下一個數字是51+5+1=57。所以你可以產生以下的序列:(1.請你利用函數的方式,列出<10000的所有數列)
此數列為:33, 39, 51, 57, 69, 84, 96,111, 114, 120, 123, 129, 141, ……
我們稱n為d(n)的generator。在上面的例子中33是39的generator,39是51的generator,51是57的generator,以下類推。有些數有不只一個generator,例如:101有2個generators,91和100。如果一個數沒有generator,那他就是一個self-number。比100小的self-number:1, 3, 5, 7,
9, 20, 31, 42, 53, 64, 75, 86, 97
請你根據上面的定義,(2.找出所有小於或等於10000的self-numbers)。
2.解法:篩選法
1.開一陣列a[10000],代表我們所有元素。預設值為0。
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
………… |
9999 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
0 |
2.讓 i= 1 to 10000
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
………… |
9999 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
|
0 |
3.列印出所有a[i]=0的i,即為所有<10000的Self-Number。