回文数?
“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。
回文数在数学领域备受关注。一个典型的问题就是,寻找那些具有某种特性,并且符合回文特征的数。例如:
- 回文素数:2, 3, 5, 7, 11, 101, 131, 151,…
- 回文完全平方数:0, 1, 4, 9, 121, 484, 676, 10201, 12321,…
一个猜想:任何一个自然数与它的倒序数相加,所得的和再与和的倒序数相加,……如此反复进行下去,经过有限次步骤后,最后必定能得到一个回文数(196除外)。因为196这个数,按照上述变换规则重复了数十万次,仍未得到回文数。但是人们既不能肯定运算下去永远得不到回文数,也不知道需要再运算多少步才能最终得到回文数。
如何判断一个数是否为回文数?
- 将这串数字逆序,然后判断逆序后的数字是否和正序后的数字完全一样,如果完全一样,就是回文。
- 进行逐位判断。首先该整数的首位数字和末尾数字进行比较,判断是否相等,若不等,则不是回文数;若相等,则删除左右两位数,然后再判断首尾,如此循环直至得出结论。
/*
*进行逐位判断。首先该整数的首位数字和末尾数字进行比较,判断是否相等,若不等,则不是回文数;
* 若相等,则删除左右两位数,再取首位数字和未尾数字进行比较,只等比较结束为止。若相等,则是回文数;反之 则不是。
*/
public static boolean palindrome(int num){
if(num < 0){
System.out.println(num + " is not Palindrome Number !");
return false;
}
int lenth = 1;
while(num / lenth >= 10){ //判断位数
lenth *= 10;
}
while(num > 0){
int right = num % 10; //取数的尾数
int left = num / lenth; //取数的首位
if(left != right){
System.out.println(num + " is not Palindrome Number !");
return false;
}
num = num % lenth / 10; //除掉首尾两位数字,剩余中间的
lenth = lenth / 100; //相应长度也减少2位
}
System.out.println(num + " is Palindrome Number !");
return true;
}
public static boolean palindrome(int num){
if(num < 0){
System.out.println(num + " is not Palindrome Number !");
return false;
}
String a=String.valueOf(num);
for(int i=0;i<a.length()/2;i++) {
if(a.charAt(i)!=a.charAt(a.length()-i-1)) {
System.out.println(num + " is not Palindrome Number !");
}else {
System.out.println(num + " is Palindrome Number !");
}
}
}