JAVA 求回文数
📝求1 - 1000之间的回文数,并且依次输出
回文数即一个数的逆序和正序完全相同,如12321 逆序后是12321,仍然是原来的数
🤔算法分析:
首先负数不是回文数如-12321,其次末尾是0的也不是回文数如 100,120
所以小于0或者能被10整除的数直接Pass🙃采用For循环作为1 - 1000的遍历
//i为For循环遍历数
if (i < 0 || (i % 10 == 0)) continue; //进入下一次循环
剔除这些不符合条件的数后,开始对数进行反转
可以使用依次取数的最低位,然后依次相加(相加后剔除原数的最低位),结束循环体条件为:依次相加最低为的数大于原来的数😋
//Num为暂存反转后的数,Value为要反转的数
while(Num < Value){
Num = (Num * 10); //乘十进位
Num += (Value % 10); //加上最低位
Value /= 10; //舍弃最低位
}
最后判断Num和Value是否相等即可,但是有一个情况需要判断,因为奇数的位数不能被均分,如121,上文代码循环后Num = 12,Value = 1,所以Num要舍弃最低位,即Value /= 10😋
if(Value == Num || Value == Num / 10) //True为此数是回文数,反之则否
📑运行源码:
package Project;
public class Universal {
public static void main(String[] args) {
for(int i = 0;i <= 1000;i++){
if(i < 0 || (i % 10 == 0)) continue;
int Num = 0,Value = i;
while(Num < Value){
Num = (Num * 10);
Num += (Value %10);
Value /= 10;
}
if(Value == Num || Value == Num /10)
System.out.print(i + "、");
}
}
}