我目前正在尝试使用 Python 解决 Project Euler 问题(我今天才学到的东西)。我正在处理的问题是问题 5,其中
2520 是可以除以 1 到 10 的每个数字而没有任何余数的最小数字。
能被 1 到 20 的所有数整除的最小正数是多少?
我以前使用 Java 解决过这些问题,所以使用与以前相同的方法,我只是创建了一个迭代的循环,但是我的代码似乎永远不会结束。
Python:
i = 1
while 1:
if i%2 == 0 and i%3==0 and i%4==0 and i%5==0 and i%6==0 and i%7==0 and i%8==0 and i%9==0 and i%10==0 and i%11==0 and i%12==0 and i%13==0 and i%14==0 and i%15==0 and i%16==0 and i%17==0 and i%18==0 and i%19==0:
print i
break
i+=1
爪哇:
public class p5
{
public static void main(String[] args)
{
for (int i=1;;i++)
{
if (i%1==0&&i%2==0&&i%3==0&&i%4==0&&i%5==0&&i%6==0&&i%7==0&&i%8==0&&i%9==0&&i%10==0&&i%11==0&&i%12==0&&i%13==0&&i%14==0&&i%15==0&&i%16==0&&i%17==0&&i%18==0&&i%19==0&&i%20==0)
{
System.out.println(i);
break;
}
}
}
}
Java 在我的计算机上执行了不到 3 秒,而 Python 代码似乎从未结束。有小费吗?
编辑:
显然我输入了错误的东西,导致它永远不会结束。但是,即使正确编写了整个内容(与我的 Java 具有相同的输出),它仍然需要1 分 20 秒,而对于 Java,它需要大约 1-2 秒。我做错什么了吗?还是 Python 的性能那么差(这不应该是 afaik)