免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: forceps
打印 上一主题 下一主题

太郁闷了,python求质数怎么比VBA还慢!! [复制链接]

论坛徽章:
0
41 [报告]
发表于 2009-04-20 10:50 |只看该作者
在windows下为什么不用windows版的python呢?

你是用cywin环境编译的python吗?怎样真的很强大。

论坛徽章:
0
42 [报告]
发表于 2009-04-21 11:47 |只看该作者
学习中

论坛徽章:
0
43 [报告]
发表于 2009-04-23 23:09 |只看该作者
把这一句prime_num = [i for i in xrange(NUM+1)]改成:
prime_num = list(xrange(NUM + 1))
时间至少可以减少30%~50%




原帖由 千年沉寂 于 2009-4-12 14:36 发表
用筛选法求质数,1000000以内的用了0.765s.

import time
start_time=time.time()

myfile=open('primes.txt','w')
NUM =1000000
prime_num = [i for i in xrange(NUM+1)]
for i in xrange(2,int(NUM** ...

[ 本帖最后由 cowking_hell 于 2009-4-23 23:36 编辑 ]

论坛徽章:
0
44 [报告]
发表于 2009-04-24 07:31 |只看该作者

回复 #43 cowking_hell 的帖子

果然如此,学习了!

论坛徽章:
0
45 [报告]
发表于 2009-05-03 16:14 |只看该作者
如果你用xrange,效率可能还能提高一点

论坛徽章:
0
46 [报告]
发表于 2009-05-18 12:58 |只看该作者
Python的优势是方便,看看你用的代码量,比VBA少了许多,很满足了。

如果想快,试试下面的代码,回车就有,时间我没有提取。


  1. #!/usr/bin/env python
  2. myfile=open('primes.txt','w')
  3. N=40000
  4. sqrtN=200
  5. X=range(N)
  6. p=3
  7. while p<sqrtN:
  8.     for i in range(p+p,N,p):X[i]=0
  9.     q=p+2
  10.     while X[q]==0 and q<sqrtN:q+=2
  11.     p=q

  12. for i in [2]+range(3,N,2):
  13.     if X[i]!=0:
  14.         print >> myfile,X[i]

  15. myfile.close()
  16. print 'End'
复制代码

[ 本帖最后由 refeihc 于 2009-5-18 14:59 编辑 ]

论坛徽章:
0
47 [报告]
发表于 2009-06-12 18:20 |只看该作者
废话,用cywin环境来运行python,当然慢啊。你怎么不用个vmware来跑vba试试

论坛徽章:
0
48 [报告]
发表于 2009-06-12 21:32 |只看该作者
好贴!

论坛徽章:
0
49 [报告]
发表于 2009-06-13 01:28 |只看该作者
用python -O优化一下?

论坛徽章:
0
50 [报告]
发表于 2009-06-13 23:24 |只看该作者

回复 #45 saromman 的帖子

如果你用xrange,效率可能还能提高一点
-----------------------------------------------------
本来就是用的xrange啊

[ 本帖最后由 cowking_hell 于 2009-6-13 23:26 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP