python和c++;程序 我用C++和Python编写了相同的程序。在Python中,它花费了不同寻常的时间(实际上我并没有从中得到答案)。有人能解释为什么会这样吗
C++代码:python和c++;程序 我用C++和Python编写了相同的程序。在Python中,它花费了不同寻常的时间(实际上我并没有从中得到答案)。有人能解释为什么会这样吗,python,c++,python-2.7,Python,C++,Python 2.7,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;
#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;
}
#包括
使用名称空间std;
int main(){
int n=1000000;
int*解决方案=新的int[n];
对于(inti=1;i,您可以尝试优化此循环,例如,使其成为没有ifs的单个块,或者使用C中的模块。
C++编译器对Python运行时不能进行优化,所以用纯解释器,你将永远不会得到性能接近的任何东西。
和1M的交互是很多的,我不会用这个范围中的任何解释器开始,你最好在浏览器和JavaScript中做。在Python中的迭代代码由于解释程序而趋于缓慢。参见:你应该尝试使用数组操作编写你的算法,或者尝试一个JIT编译器。在2。X考虑<代码> xLangeRA除<代码>范围(1,n+1)< /代码>外,我可能会考虑制作<代码> L<代码> A<代码> DICT< /Cube >(或<代码>集合>计数器< /C> >。您在C++代码中有未定义的行为(使其成为新的int [n+1;])…或更改第一个循环到<代码>(int i=0;i < n;i++) >现在你完全错过了零个索引。而且,你忘了在C++代码中释放int数组。你应该在函数的末尾有<代码> Dele[[]解决方案< /Cord>。或者,你可以使用<代码> STD::vector < /代码>。
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)