关于java和python的相同实现,两个非常不同的运行时间

eli*_*eli 0 python java time

我的朋友和我做了一个程序来做同样的事情,他在java和我的python中.我们必须解决的问题是"从1到20的所有数字均可被整除的最小正数是多少?" 我们都得到了正确的答案,据我所知,实施起来非常相似,但他的一个在大约三秒内完成,而我的一分钟.任何人都可以看到为什么会这样吗?为了清楚起见,我知道这两种方式都不是最好的,但它们都有效,我感兴趣的是看到为什么会有这么大的时差.谢谢!

Java的:

for (int i = 1; i > 0; i++) {
    for (int j = 1; j < 21; j++) { 
        if (i % j != 0) {                  
            break;
        }
        if (j == 20) {
            System.out.println("ANSWER: " + i);
            System.exit(0);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

e=1
while e > 0 :
    num =1
    while num < 21:

        if e % num != 0:
            break
        num += 1



    if num == 21:
        print e
        break
    e += 1
Run Code Online (Sandbox Code Playgroud)

ama*_*urs 6

虽然你在python中的实现看起来很相似,但缩进非常重要.在Java版本中,此块:

if(j == 20){
    System.out.println("ANSWER: " + i);
    System.exit(0);
}
Run Code Online (Sandbox Code Playgroud)

在第二个for循环中.在python版本中,块:

if num == 21:
    print e
    break
Run Code Online (Sandbox Code Playgroud)

在第二个while循环之外.