找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: codegay

[原创代码] 欧啦计划第七题10001st prime

[复制链接]
发表于 2016-4-7 23:19:34 | 显示全部楼层
回复 16# codegay
julia的计算能力更卓越,但不知为何你启动就要3秒,有那么费时吗。SSD 4k读写几十M应该是秒开的。
 楼主| 发表于 2016-4-7 23:22:54 | 显示全部楼层
回复 16# happy886rr

windows版的问题。
linux版启动0.2秒
发表于 2016-4-7 23:31:29 | 显示全部楼层
回复 17# codegay
另外你的解法是生成小于等于end的素数数组,但是你没有对end进行估值。
可以用素数定理逆推出end大体范围,从而减少不必要的素数生成。因为计算上亿级别的素数根本不是几秒的事。但如果用递增,就不用考虑这些。
 楼主| 发表于 2016-4-7 23:38:16 | 显示全部楼层
回复 18# happy886rr


    好的。但是我并不懂算法。
julia现在的primes() 函数还不是生成器,直接返回一个数组。所以会有大量内存消耗的问题。
发表于 2016-4-10 23:36:05 | 显示全部楼层
本帖最后由 happy886rr 于 2016-4-11 09:34 编辑

三种不同算法,最后一个基于最好的数学理论.

  1. #  Python解EulerPJ-7P:The 10001st prime number is?
  2. # 常规解法用小于根号N的奇数去除
  3. N=1;i=1;
  4. while i<10001:
  5.         N+=2;v=1
  6.         for j in range(3,int(N**0.5)+1,2):
  7.                 if N%j is 0:
  8.                         v=0;
  9.         if v is 1:
  10.                 i+=1
  11. print(N)
复制代码
  1. # Python解EulerPJ-7P:The 10001st prime number is?
  2. # 构建素数数组p,只用素数数组中的数去除,按理说速度会提高,自己语法不太会,速度没提高很囧。
  3. N=1;i=1;p=[]
  4. p.append(3)
  5. while i<10001:
  6.         N+=2;v=1
  7.         for j in range(1,len(p)):
  8.                 if N%p[j] is 0:
  9.                         v=0
  10.                 if p[j]**2>N:
  11.                         break
  12.         if v is 1:
  13.                 i+=1;p.append(N)
  14. print(N)
复制代码
  1. # Python解EulerPJ-7P:The 10001st prime number is?
  2. # 构建小于1000/3的素数数组p,只用小于333.3...的素数去除,理论上讲是最优解法,但是python数组效率没救了,居然用了0.7秒才出结果。脑汁已用尽!
  3. N=1;i=1;p=[]
  4. p.append(3)
  5. while i<10001:
  6.         N+=2;v=1
  7.         for j in range(1,len(p)):
  8.                 if N%p[j] is 0:
  9.                         v=0
  10.         if v is 1:
  11.                 i+=1
  12.                 if N<333:
  13.                         p.append(N)
  14. print(N)
复制代码
 楼主| 发表于 2016-4-11 02:52:34 | 显示全部楼层
25th是什么鬼。

当年我入门python可是用了半个月。。。

数组长了,操作会变很慢的。
发表于 2016-4-11 09:36:20 | 显示全部楼层
回复 21# codegay
欧拉项目题多,搞错题号,代码已修改,又增加一个最优算法,见原楼。
 楼主| 发表于 2016-4-11 16:17:26 | 显示全部楼层
回复 22# happy886rr


    python很多对象都是可迭代的。不用len range index
for r in list\str\文件IO 都可以。

网上说的字典和集合都是hash表存储的。缺点是默认不保持顺序。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:47 , Processed in 0.017056 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表