我用C ++和Python编写了相同的程序。在Python中,它花费了不寻常的时间(实际上我没有得到答案)。谁能解释为什么会这样?
C ++代码:
#include<iostream>
using namespace std;
int main(){
int n = 1000000;
int *solutions = new int[n];
for (int i = 1; i <= n; i++){
solutions[i] = 0;
}
for (int v = 1; v <= n; v++){
for (int u = 1; u*v <= n; u++){
if ((3 * v>u) & (((u + v) % 4) == 0) & (((3 * v - u) % 4) == 0)){
solutions[u*v]++;
}
}
}
int count = 0;
for (int i = 1; i < n; i++){
if ((solutions[i])==10)
count += 1;
}
cout << count;
}
Python代码:
n=1000000
l=[0 for x in range(n+1)]
for u in range(1,n+1):
v=1
while u*v<n+1:
if (((u+v)%4)==0) and (((3*v-u)%4)==0) and (3*v>u):
l[u*v]+=1
v+=1
l.count(10)
答案 0 :(得分:0)
您可以尝试优化此循环,例如将其设为单个块,其中没有ifs,或者在C中使用模块。 C ++编译器可以实现Python运行时的优化,因此对于纯粹的解释器,您将永远无法获得性能。 1M的交互很多,我从那个范围内的任何翻译开始,你最好在浏览器和JavaScript中做这件事。