/*类斐波那契循环数*/
public class Main {
public static void main(String[] args) {
int[]arr = new int[100000];
int[]brr = new int[100000];
int b = 0;
int sum=0;
int k=0;
for(int i=100;i<=10000000;i++){
sum = 0;
k = 0;
char[]ch = (i+"").toCharArray();
for(int j=0;j<ch.length;j++){
arr[j] = ch[j]-'0';
sum += arr[j];
k = j+1;
}
arr[k] = sum;
while(arr[k]<i){
k++;
arr[k] = 2*arr[k-1]-arr[k-ch.length-1];
}
if(arr[k]==i){
brr[b++]=i;
}
}
for(int i=0;i<b;i++){
System.out.println(brr[i]);
}
}
}
思路:
案例给了:197 = {1,9,7,17,33,57,......197}
不难发现197是一个3位数,所以是前三位相加得到第四位。不难看出第五位数字33则是9,7,17相加得出。但17又是1,9,7相加得出。就相当于9+7 = 17 - 1,大胆猜测:对于33而言,可以看成 33=17*2-1。故而第五位数为:57 = 33*2-9;
规律如下:arr【k】=2*arr[k-1]-arr[k-ch.length-1];
即可得出最后结果:
个人思路,仅供参考。