mathematica 发表于 2011-1-15 11:37:56

2011这个素数, 最多是多少个连续素数的和?

2011 本身是一个素数, 且是 11 个连续素数之和。

(157+163+167+173+179+181+191+193+197+199+211=2011)
来源:http://tieba.baidu.com/f?kz=967687985
问题来了,
2011可以被写成哪些连续素数的和?
最长的是可以写成多少个?我想应该不会小于11吧此贴附带 mathematica 学习价值
显然是可以穷举的,但是请写出程序吧,最好还能有注释,
没有注释的程序让人很不喜欢!

mathematica 发表于 2011-1-15 12:20:54

661 +673+677=2011这是另外一组

mathematica 发表于 2011-1-15 12:32:05

function output=sushu2011
k=1;%结果个数
for i=2:1:1005 %从2开始寻找
    if isprime(i) %从第一个数是素数的开始找
      =istart(i);%求出和(>=2011)与素数序列
      if a==2011 %如果和等于2011,则赋值
         output{k}=b;%对结果赋值
         k=k+1;
      end
    end
end
end
%%%子函数,求出从素数j开始的连续素数,
%使得其和略大于等于2011
function =istart(j)
jsum=0;%用来保存素数和
k=0;%用来保存素数个数
sushu=[];%用来保存素数序列
for i=j:1:1009
%j是奇数,找出连续素数的和,使其结果小于等于2011
%注意是jsum<2011,而不是jsum<=2011
if isprime(i)&&jsum<2011
   jsum=jsum+i;%连续素数求和
   sushu=;%记录连续素数
   k=k+1;%连续素数的个数
end
end
output=;%素数个数,素数序列
end上面的代码是用matlab写的,我几乎只会用matlab了,对mathematica有点熟悉,
但是还是对matlab比较熟悉,结果有两个!

mathe 发表于 2011-1-15 15:13:30

Pari/Gp
f(n)=forprime(p=2,n/2,s=0;forprime(q=p,n,s+=q;if(s==n,print(p","q));if(s>n,break())))

f(2011)

mathematica 发表于 2011-1-15 15:49:25

4# mathe
mathe好厉害呀,我觉得这个也可以用mathematica编程,但是mathematica不是一个善于编程的软件

mathematica 发表于 2011-1-15 16:28:31

Clear["Global`*"];(*清除所有变量*)
num=2011;(*被求的数*)
geshu=PrimePi;(*num以下的素数的个数*)
tab=Table,{n,geshu}];(*给出num以下的素数表*)
Do[
   sum=0;
   t=0;
   Do[
      sum=sum+tab[];(*从第k个素数开始求和*)
      t=t+1;(*参加求和的素数个数*)
      (*如果和等于num,则输出是从第k个素数开始的*)
      If];
      (*如果和大于num,从第k个素数开始的连续素数序列没有符合要求的*)
      If],
      {j,k,geshu}
   ],
   {k,1,geshu}
] 这个代码是用mathematica写的,速度要快很多很多!

结果是
{37,11}

{121,3}

{305,1}

mathematica 发表于 2011-1-15 16:30:09

为了使别人更加容易代码,我使用了类似于C语言的风格的代码

mathematica 发表于 2011-1-15 16:37:12

Clear["Global`*"];(*清除所有变量*)
num=2011;(*被求的数*)
geshu=PrimePi;(*num以下的素数的个数*)
tab=Table,{n,geshu}];(*给出num以下的素数表*)
Do[
   sum=0;
   t=0;
   Do[
      sum=sum+tab[];(*从第k个素数开始求和*)
      t=t+1;(*参加求和的素数个数*)
      (*如果和等于num,则输出从第k个素数开始的连续t个素数序列*)
      If]}]];
      (*如果和大于num,从第k个素数开始的连续素数序列没有符合要求的*)
      If],
      {j,k,geshu}
   ],
   {k,1,geshu}
]结果是{个数,连续素数序列}的形式
如下:
{11,{157,163,167,173,179,181,191,193,197,199,211}}

{3,{661,673,677}}

{1,{2011}}

mathematica 发表于 2011-1-15 16:43:05

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}}
居然是连续29个素数之和,真的很奇妙的一个数

wayne 发表于 2011-1-17 07:56:47

4# mathe
mathe好厉害呀,我觉得这个也可以用mathematica编程,但是mathematica不是一个善于编程的软件
mathematica 发表于 2011-1-15 15:49 http://bbs.emath.ac.cn/images/common/back.gif
用Mathematica编程只需一行代码 即可搞定!!!
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 2011这个素数, 最多是多少个连续素数的和?