mathe 发表于 2009-4-10 08:42:52

任何三个数之和为素数的集合

来自
http://tieba.baidu.com/f?kz=561833965
请找出5个数,使得它们中任何三个数之和为不同的素数.

比如如果我们找5个数为-5, 1, 7, 6m+3, 6n+3并且使得
6(m+n)+1,6(m+n)+7,6(m+n)+13
6m-1,6m+5,6m+11
6n-1,6n+5,6n+11
都是素数,那么这必然是一个解,当然这个搜索任务应该不会很简单.

同样,如果我们找到3个关于6同余的奇数a,b,c,而且a,b,c都不是3的倍数,使得a+b+c=3
并且选择另外两个模6为3的整数6m+3,6n+3,使得
6(m+n+1)+a,6(m+n+1)+b,6(m+n+1)+c
6m+3+a+b,6m+3+b+c,6m+3+c+a
6n+3+a+b,6n+3+b+c,6n+3+c+a
都是素数,那么它们也是这个问题的解.

而我的分析是上面应该包含了所有的解.
现在的问题就是用计算机找到一个这样的解.

mathe 发表于 2009-4-10 09:27:26

555,
计算了一下,小的解已经很多了:L
-5 1 7 15 21
-5 1 7 15 51
-5 1 7 15 261
-5 1 7 15 591
-5 1 7 15 1281
-5 1 7 15 4641
-5 1 7 21 45
-5 1 7 21 51
-5 1 7 21 255
-5 1 7 21 351
-5 1 7 21 591
-5 1 7 21 1101
-5 1 7 21 1431
-5 1 7 21 2691
-5 1 7 45 231
-5 1 7 45 561
-5 1 7 51 105
-5 1 7 51 561
-5 1 7 51 1611
-5 1 7 105 171
-5 1 7 105 2691
-5 1 7 105 3531
-5 1 7 171 561
-5 1 7 171 1281
-5 1 7 171 1491
-5 1 7 171 1611
-5 1 7 171 4935
-5 1 7 231 1221
-5 1 7 231 1431
-5 1 7 231 1905
-5 1 7 255 351
-5 1 7 255 1491
-5 1 7 255 1611
-5 1 7 261 351
-5 1 7 261 1485
-5 1 7 261 1491
-5 1 7 261 1605
-5 1 7 261 1611
-5 1 7 261 2415
-5 1 7 351 945
-5 1 7 351 1101
-5 1 7 351 1431
-5 1 7 351 2961
-5 1 7 351 4641
-5 1 7 561 1101
-5 1 7 561 1185
-5 1 7 561 1221
-5 1 7 561 1431
-5 1 7 561 2901
-5 1 7 591 1281
-5 1 7 591 3921
-5 1 7 591 4005
-5 1 7 645 651
-5 1 7 645 1101
-5 1 7 645 1221
-5 1 7 645 1491
-5 1 7 645 4011
-5 1 7 645 4791
-5 1 7 651 1095
-5 1 7 651 1101
-5 1 7 651 1221
-5 1 7 651 1485
-5 1 7 651 4005
-5 1 7 651 4455
-5 1 7 651 4791
-5 1 7 945 1431
-5 1 7 945 2691
-5 1 7 975 4131
-5 1 7 1095 1281
-5 1 7 1095 4011
-5 1 7 1101 1185
-5 1 7 1101 1281
-5 1 7 1101 1611
-5 1 7 1101 4005
-5 1 7 1101 4011
-5 1 7 1101 4641
-5 1 7 1185 1491
-5 1 7 1185 1611
-5 1 7 1185 3921
-5 1 7 1221 1491
-5 1 7 1221 2415
-5 1 7 1281 1431
-5 1 7 1281 4131
-5 1 7 1281 4791
-5 1 7 1365 1431
-5 1 7 1431 4005
-5 1 7 1431 4011
-5 1 7 1431 4131
-5 1 7 1431 4641
-5 1 7 1431 4935
-5 1 7 1491 3921
-5 1 7 1611 2901
-5 1 7 1611 4131
-5 1 7 1905 2691
-5 1 7 1905 3531
-5 1 7 2415 2691
-5 1 7 2691 2961
-5 1 7 3921 4791

mathe 发表于 2009-4-10 09:29:08


#include "stdafx.h"
#define HALF_PRIME (100)
#define PRIME_LIMIT (HALF_PRIME*HALF_PRIME)
bool notp;
#define IS_PRIME(x) (!notp)
void init_prime()
{
    int i,j;
    notp=notp=true;
    for(i=2;i<=HALF_PRIME;i++){
      if(IS_PRIME(i)){
            for(j=i*i;j<PRIME_LIMIT;j+=i){
                notp=true;
            }
      }
    }
}

int nlist;
int nc;
int _tmain(int argc, _TCHAR* argv[])
{
    int up;
    int m,n;
    init_prime();
    up=(PRIME_LIMIT-14)/12;
    for(m=1;m<up;m++){
      if(!IS_PRIME(6*m-1))
            continue;
      if(!IS_PRIME(6*m+5))
            continue;
      if(!IS_PRIME(6*m+11))
            continue;
      if(nc<HALF_PRIME){
            nlist=m;
      }
    }
    for(m=0;m<nc;m++)for(n=m+1;n<nc;n++){
      int u=6*(nlist+nlist);
      if(!IS_PRIME(u+1))continue;
      if(!IS_PRIME(u+7))continue;
      if(!IS_PRIME(u+13))continue;
      printf("-5 1 7 %d %d\n",6*nlist+3,6*nlist+3);
    }
    return 0;
}

mathe 发表于 2009-4-10 09:37:51

本来以为同时9个素数约束条件结果应该很少的,没想到会这么多:L

无心人 发表于 2009-4-10 14:03:32

呵呵

肯定越来越复杂

没——问题 发表于 2009-4-10 17:48:21

经常感叹 mathe初等高等数学都那么熟练。。。再加上计算机的力量.....简直无敌了:L

winxos 发表于 2009-4-10 23:28:56

mathe的代码风格好优美:)

mathe 发表于 2009-4-15 11:27:37

呵呵,应该是比较常见的C风格代码.
不过高等数学,其实mathe也就一些非常常用的部分还能够应用.(数学的水太深了)
页: [1]
查看完整版本: 任何三个数之和为素数的集合