您的位置:首页 > 编程语言 > Python开发

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

2016-05-28 16:42 721 查看
相关文章推荐:

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 )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: