Java\Scala\Python三种语言求解经典编程实例(二)—— 尾数前移

相关文章推荐:

Java\Scala\Python三种语言求解经典编程实例(一)——求水仙花数


三种语言求解经典编程实例,全部是在Linux下编码实现的。

配置参数文章: 快速配置Linux下的编程环境变量

Linux下运行Python的文章:

安装Python交互式数据处理工具——IPython

Linux下创建并执行python脚本



 尾数前移问题:求一个自然数N,个位数是6,将6提到最前面所得数是N的4倍。
解题思路:
   1.令末位数t = 6, 除末位以外部分n
   2.t连续×10移动到最高位, 再加上n
   3.t + n == 10 * n + 6 ?
 1236 => 6123 == 4 * 1236


1、Java语言实现

public class NumTest{
        public static void main(String[] args){
                for(int i=1; i<=30000;i++){
                        fun(i);
                }
        }

        public static void fun(int n){
                int nn = n;
                int t = 6;
                while(nn > 0){  // t连续×10移动到最高位, 再加上n
                        t *= 10; 
                        nn /= 10;
                }

                int m = 10 * n + 6;  
                if (t + n == m * 4){
                        System.out.println(m);
                }
        }
}

2、scala语言实现

object NumTest extends App{
        def fun(n:Int){
                var nn = n
                var t = 6
                while(nn>0){  //核心算法实现与java一致
                        t *= 10
                        nn /= 10
                }

                var m = 10 * n + 6
                if ( t + n == m * 4)
                        println(m)
        }

        for (x <- 1 to 30000)
                fun(x)
}

3、Python语言实现

def fun(n):
    nn = n
    t = 6
    while nn > 0:
        t *= 10
        nn /= 10

    m = 10 * n + 6
    if t + n == m * 4:  # 尾数前移后比较原数*6,相等则为结果
        print m


for x in range(1,30000):
   fun(x)


最终结果三种语言执行都是一致的:153846  (615384 = 153846  *4 )


你可能感兴趣的:(java,scala,python)