计算回文数

 

 

"回文数"是一种数字。如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数。 

 

一个数字,把它的各位数字上数字倒过来排列组成一个新数,然后与原数相加,如果是回文数则停止,如果不是,则重复这个操作,直到和为回文数为止。如果在30步以外(含30步)不可能得到回文数,则输出0。输入的数保证不为回文数。

详细描述:

 

在caculateHuiWenShu函数中实现该功能:

/* 功能:

 * 输入:int 一个小于的进制数

 * 输出:把它的各位数字上数字倒过来排列组成一个新数,然后与原数相加,如果是回文数则停止,如果不是,则重复这个操作,直到和为回文数为止,并输出次数,如果次计算不能得到回文数,则输出。

 * 返回:

      例如:进制则有:

     STEP1: 87+78=165

     STEP2: 165+561=726

     STEP3: 726+627=1353

     STEP4: 1353+3531=4884

     则输出 4

 */

输入一个0<=m<30000<>的非回文数,

代码如下:

 

package huawei;


public final class Demo {
    
    /* 功能:

     * 输入:int 一个小于的进制数

     * 输出:把它的各位数字上数字倒过来排列组成一个新数,然后与原数相加,如果是回文数则停止,如果不是,则重复这个操作,直到和为回文数为止,并输出次数,如果次计算不能得到回文数,则输出。

     * 返回:

          例如:进制则有:

         STEP1: 87+78=165

         STEP2: 165+561=726

         STEP3: 726+627=1353

         STEP4: 1353+3531=4884

         则输出 4

     */


     public static long  caculateHuiWenShu(int input)  
    {  
        long    HuiWenNum=0;  
        input =Math.abs(input)
;        if(isHuiWen(input))
        {
            return 0;
        }
        
        while(HuiWenNum<=30)
        {
            HuiWenNum++;    
            if(isHuiWen(input+reverse(input)))
            {
                break;
            }
            input=input+reverse(input);
        }            
      
        return   HuiWenNum>30?0:HuiWenNum; 
        
    }  
     
    public static int reverse(int input)   //一个数倒转后的数
    {
        int output =0;
        while(input>0)
        {
            output = output*10+input%10;
            input=input/10;
        }
        return output;
    }
    
    public static boolean isHuiWen(int input)//判断是否为回文数
    {
        if(input==reverse(input))
            return true;
        else
            return false;
    }

}

 

 

 

转载于:https://www.cnblogs.com/poeticliving/p/3240793.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值