百科知识

一道数学题b和p是大于1的自然数,且p+2b,p+4b,p+6b

2006-12-30 17:19:591***
b和p是大于1的自然数,且p+2b,p+4b,p+6b,p+8b,p+10b,p+12b都是质数,求p+b的最小值.一道数学题b和p是大于1的自然数,且p+2b,p+4b,p+6b,p+8b,p+10b,p+12b都是质数,求p+b的最小值.:用程序来枚举这类题果然要比用分析?

最佳回答

  •   用程序来枚举这类题果然要比用分析来得快^_^ 由题目看来,p+2b,p+4b,p+6b,p+8b,p+10b,p+12b都是质数,可以约定:p为奇数。 而又因为有p+6b(即p+2*3*b)和p+10b(p+2*5*b)可知p不能被3、5整除。
       且p+2b,p+4b,p+6b,p+8b,p+10b,p+12b都是质数,为了使p与后面的数相加不会产生2、3、5的倍数,b应为15或其倍数。 至此已经没有什么更好的约减方法,以以上条件试求满足题意的p和b。 由于b=15时,2b、4b、6b、8b、10b、12b去除以7,余数依次为2、4、6、1、3、5,可知当b=15时,p必为7的倍数。
      依次尝试p=7、49、77,得出p=77时满足条件。 同理b=30时,2b、4b、6b、8b、10b、12b去除以7,余数依次为4、1、5、2、6、3,可知当b=15时,p仍为7的倍数。尝试p=7、49,不符合题意,无解(由于p=77及以上没有意义,因此不用尝试)。
       依次计算b=45,p=7和b=60,p=7均不符合题意。 至此可以判定p+b的最小值为p=77,b=15时的p+b值,p+b=92。 另附一张做这道题时用的5000之内的素数表~~幸好有这参考,不然真会累死的~~。
    2007-01-15 09:46:10
  •   设p+12b=k k确定,则b的取值范围可定,如此可以设计如下算法计算: 计算结果 p=77;b=15;p+b=92; p+2b,。。。p+12b;依次为 107,137,167,197,227,257 这是用计算机语言辅助求解的,不知道是不是合你的意思,我也是看到以后随便玩玩的,是枚举法,没什么技术含量,见笑 具体的算法: 先让k为一个质数,然后确定b,使得 p+2b,。
      。。
      ,p+12b为质数 isp(k)函数判断k是否质数 算法如下: #include bool isp(long k) {//判断k是否为质数 if(1>=k) return false; long i=k-1; bool flag = true; while(1!=i) { if(k%i==0) { flag=false; break; } i--; } return flag; } int main(int argc, char* argv[]) { bool isp(long); long k=29,b; // p,b均 >= 2, k>=26 第一个素数为29 while(1) { bool flag=false; //跳出while(1)准备 while(!isp(k)) k+=2; //确定k for(b=2;k-12*b>1;b++) if(isp(k-2*b)&&isp(k-4*b)&&isp(k-6*b)&&isp(k-8*b)&&isp(k-10*b)) {//确定b flag=true; cout<<"anser:p="<2007-01-13 18:32:01
  • 很赞哦! (9)