数学研发论坛

 找回密码
 欢迎注册
楼主: mathematica

[提问] 2011这个素数, 最多是多少个连续素数的和?

[复制链接]
 楼主| 发表于 2011-1-17 08:32:40 | 显示全部楼层
10# wayne

不过,如果真的一行代码可以搞定的话,为什么你不把这行代码写出来呢?奇怪!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-1-17 08:35:01 | 显示全部楼层
用Mathematica编程只需一行代码 即可搞定!!!
wayne 发表于 2011-1-17 07:56


不过,如果真的一行代码可以搞定的话,为什么你不把这行代码写出来呢?奇怪!
还有,我觉得把mathematica代码的风格写成多行比较好些,因为如果写成一行
的话,可能理解起来也很费劲,注释程序也很困难,我是不喜欢没有注释的程序,
读没有注释的程序,简直就是一种折磨!你觉得呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-1-17 09:02:15 | 显示全部楼层
9527(对于这个数,请见周星驰的电影吧或者百度)是个很好的数,
输出结果是{29,{241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419}}
居然是连 ...
mathematica 发表于 2011-1-15 16:43

9527不如9523神奇
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-1-17 10:08:44 | 显示全部楼层
12# mathematica

1)代码很短,甚至只有一行,有必要注释吗???
2)本来1分钟就可以把程序写好,结果多花了一分钟去注释,而且又没有打算让人家看,值得吗???
3)你难道不觉得吗,有时候注释还妨碍视线,使得阅读的效果大打折扣
4)我个人认为,Mathematica是很高级的语言,要尽量避免使用低效的For!!!

这题对于编程来说,实在太简单,我很自信,我前面说的话马上能兑现出来!!!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-1-17 10:14:11 | 显示全部楼层
这个代码是用mathematica写的,速度要快很多很多!


我可以肯定,把2011 换成更大的数,你的速度会急剧的慢下来,直至忍无可忍
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-1-17 10:14:17 | 显示全部楼层
wayne在10层发帖或许是因为mathematica在5层说了Mathematica的坏话,呵呵。
但是wayne为M辩解的理由是不好的,代码短或许不一定是评价“善(利)于编程”的关键要素。
大家知道模块化或许是关键要素之一,这点上M就继承了c的风格,存在内部变量。其实可以看到M的设计思路中有c的影子,M一开始是在unix上的,都说明了设计者对c的感情。M的符号运算为基础的理念和对数学及算法的集成使之在数学计算上是优秀的软件平台。相信在“优秀”这一点上,wayne和mathematica的观点是应该一致吧,所以就不要吵了。呵呵。
PS:
n=2011;t={2};While[Last[t]<n,s=Apply[Plus,t];If[s<=n,If[s==n,Print[t]];AppendTo[t,NextPrime[Last[t]]],t=Rest[t]]];
(*要M7及以上版本*)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-1-17 10:17:28 | 显示全部楼层
本帖最后由 wayne 于 2011-1-18 10:08 编辑
10# wayne

不过,如果真的一行代码可以搞定的话,为什么你不把这行代码写出来呢?奇怪!
mathematica 发表于 2011-1-17 08:32
n=2011;t=Accumulate[Prime@Range@PrimePi[n]];
Select[Range[PrimePi[n]],MemberQ[t,Total[Prime[Range[#]]]+n]&]+1
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-1-17 10:21:38 | 显示全部楼层
17# wayne
再来一个速度快点的:
  1. xx = Accumulate[Prime@Range@PrimePi[n]]; Flatten[Position[xx, #] & /@ Select[xx, MemberQ[xx, # + n] &]] + 1
复制代码

点评

果然Mathematica也是一门自带混淆的语言:)  发表于 2018-6-22 18:40
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-1-17 10:24:31 | 显示全部楼层
18# wayne
以空间换时间,所以速度快了,还可以更快,稍等
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-1-17 10:34:36 | 显示全部楼层
换了一种全新的思路,但代码超过了一行,不过速度又大大提高了,可以算出200万零11只有一个解:
{222161, 222163, 222193, 222197, 222199, 222247, 222269, 222289, 222293}
  1. n = 200011; t = Range@PrimePi[n]; sol = Select[Select[ GatherBy[Transpose[{t + 1, Accumulate@Prime@t}], Mod[#[[2]], n] &], Length[#] == 2 &], #[[2, 2]] - #[[1, 2]] == n &][[All, All, 1]]
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2021-1-26 10:19 , Processed in 0.067849 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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