[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 4# codegay
julia在数值计算,绘图方面的优势很大,只是安装包体积太大。希望日后能出精简版。

TOP

本帖最后由 happy886rr 于 2016-4-8 15:25 编辑

回复 8# codegay
  1. /*
  2. TinyC script混编
  3. move %0 "%~0.c"&cls&@tcc\tcc.exe -run "%~0.c"&rename "%~0.c" "%~nx0"
  4. */
  5. #include<stdio.h>
  6. main()
  7. {
  8. int i,j,sum=0;
  9. for(i=1;i<=2000000000;i+=2){
  10. for(j=3;j*j<=i;j+=2){
  11. if(i%j==0) break;
  12. }
  13.     if(j*j>i) sum++;
  14. if(sum==10001) break;
  15. }
  16. printf("Problem7 -Project Euler\n");
  17. printf(" * The 10001st prime number is “%d”\n",i);
  18. getchar();
  19. }
复制代码
1

评分人数

TOP

回复 10# codegay
而且批处理代码和C代码融合的很好,相互可以调用和传递参数,基于的第三方C解释器tcc精简版才100多kb,运行非常迅捷。

TOP

回复 13# codegay
tcc有个-run参数。我利用这个参数直接当脚本运行。也没发现tcc产生临时文件。tcc的官网也说它直接就支持不编译而运行,估计是读到内存里了。

TOP

回复 16# codegay
julia的计算能力更卓越,但不知为何你启动就要3秒,有那么费时吗。SSD 4k读写几十M应该是秒开的。

TOP

回复 17# codegay
另外你的解法是生成小于等于end的素数数组,但是你没有对end进行估值。
可以用素数定理逆推出end大体范围,从而减少不必要的素数生成。因为计算上亿级别的素数根本不是几秒的事。但如果用递增,就不用考虑这些。

TOP

本帖最后由 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)
复制代码

TOP

回复 21# codegay
欧拉项目题多,搞错题号,代码已修改,又增加一个最优算法,见原楼。

TOP

返回列表