标题:生成回文数
所谓回文数就是左右对称的数字,比如:
585,5885,123321…
当然,单个的数字也可以算作是对称的。
小明发现了一种生成回文数的方法:
比如,取数字19,把它与自己的翻转数相加:
19 + 91 = 110,如果不是回文数,就再进行这个过程:
110 + 011 = 121 这次是回文数了。
200以内的数字中,绝大多数都可以在30步以内变成回文数,只有一个数字很特殊,就算迭代了1000次,它还是顽固地拒绝回文!
请你提交该顽固数字,不要填写任何多余的内容。
public class C_Main {
private static int sum;
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 100; i < 200; i++) {
sql(i);
if (sum > 200) {
System.out.println("大于" + sum + "的");
}
}
}
private static void sql(int i) {
// TODO Auto-generated method stub
if (!is(i)) {
sum++;
int num = i + dudu(i);
sql(num);
} else {
System.out.print("回文数"+i);
System.out.println(" "+sum);
sum = 0;
}
}
private static boolean is(int originalNumber) {
int palindrome = 0;
int origin = originalNumber;
// get the palindrome
while (originalNumber != 0) {
palindrome = palindrome * 10 + originalNumber % 10;
originalNumber /= 10;
}
return palindrome == origin;
}
private static int dudu(int i) {
int p = 0;
while (i != 0) {
p = p * 10 + i % 10;
i /= 10;
}
return p;
}
}
从最后结果就能看出来,只有196需要迭代好多好多次!