Project Euler No.10 题,相同的算法用 C++ 和 Python 耗时差异巨大

Python/PHP/Perl 开发与设计
头像
b33e
论坛版主
帖子: 3862
注册时间: 2011-06-07 14:20
系统: Mint18
送出感谢: 16 次
接收感谢: 62 次

Re: Project Euler No.10 题,相同的算法用 C++ 和 Python 耗时差异巨大

#31

帖子 b33e » 2012-10-01 11:20

嗯,搞计算,用fortran
头像
xw_y_am
帖子: 3332
注册时间: 2009-05-08 14:18
系统: Arch
来自: 河南新乡
送出感谢: 10 次
接收感谢: 6 次
联系:

Re: Project Euler No.10 题,相同的算法用 C++ 和 Python 耗时差异巨大

#32

帖子 xw_y_am » 2012-10-01 13:10

b33e 写了:嗯,搞计算,用fortran
fortran 算 2^1000 怎么破 :em06 :em06
Linux 相关链接大杂烩

代码: 全选

if(read) {
    if(practise) return g☘☘d;
    else return w☘☘d;
} else {
    return t☘☘d;
}
ukyo502
帖子: 1
注册时间: 2012-10-14 19:49
系统: XP
送出感谢: 0
接收感谢: 0

Re: Project Euler No.10 题,相同的算法用 C++ 和 Python 耗时差异巨大

#33

帖子 ukyo502 » 2012-10-14 19:51

def primes(n):
""" returns a list of prime numbers from 2 to < n """
if n < 2: return []
if n == 2: return [2]
# do only odd numbers starting at 3
s = range(3, n, 2)
# n**0.5 may be slightly faster than math.sqrt(n)
mroot = n ** 0.5
half = len(s)
i = 0
m = 3
while m <= mroot:
if s:
j = (m * m - 3)//2
s[j] = 0
while j < half:
s[j] = 0
j += m
i = i + 1
m = 2 * i + 3
# make exception for 2
return [2]+[x for x in s if x]
p=2000000
print sum(primes(p))
====================================================================
2秒
philwong
帖子: 9
注册时间: 2012-10-17 15:05
系统: ubuntu 12.04
送出感谢: 0
接收感谢: 0

Re: Project Euler No.10 题,相同的算法用 C++ 和 Python 耗时差异巨大

#34

帖子 philwong » 2012-10-22 20:05

看具体应用吧,如果是非常成熟的算法(都已经用非常接近Fortran的形式推导好了)就用Fortran,不然,C++和C还是有点优势的。用运行时间换开发时间。
这种没有多大实际应用的例子,就不用追求优化了吧?
能用就可以了。打开C++,写代码,再调试的时间会比那6s-0.5s多得多
回复

回到 “Python/Php/Perl”