找回密码
 欢迎注册
查看: 58|回复: 10

[求助] 素数系列,间隔是100,200,300,...100*n

[复制链接]
发表于 前天 14:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
寻找最长的n值,使得素数系列是间隔100,200,300,400...直到100*n
31,131, 331, 631, 1031, 1531, 2131, 2831
  1. PrimeSequenceArithmetic := proc(p, step_base, max_steps)
  2.     local k, current, sum_step, terms;
  3.     if not isprime(p) then
  4.         error "%1 不是素数", p;
  5.     end if;
  6.     terms := [p];
  7.     sum_step := 0;
  8.     for k from 1 to max_steps do
  9.         sum_step := sum_step + step_base * k;  # 间隔为100, 200, 300...
  10.         current := p + sum_step;
  11.         if isprime(current) then
  12.             terms := [op(terms), current];
  13.         else
  14.             break;
  15.         end if;
  16.     end do;
  17.     return terms;
  18. end proc;

  19. FindLongestArithmeticInRange := proc(min_p, max_p, step_base, max_steps)
  20.     local p_list, p, current_seq, len, max_len, best_p;
  21.     p_list := select(isprime, [seq(i, i=ceil(min_p)..floor(max_p))]);
  22.     if numelems(p_list) = 0 then
  23.         printf("范围 %a-%a 内无素数\n", min_p, max_p);
  24.         return [NULL, 0];
  25.     end if;
  26.     max_len := 0;
  27.     best_p := NULL;
  28.     for p in p_list do
  29.         current_seq := PrimeSequenceArithmetic(p, step_base, max_steps);
  30.         len := nops(current_seq);
  31.         if len > max_len then
  32.             max_len := len;
  33.             best_p := p;
  34.         end if;
  35.     end do;
  36.     printf("范围 %a-%a 内最长算术间隔序列:起始素数=%a,长度=%a\n",
  37.            min_p, max_p, best_p, max_len);
  38.     return [best_p, max_len];
  39. end proc;

  40. ArithmeticSegmentAnalysis := proc(ranges::list, step_base, max_steps)
  41.     local i, range_data, result;
  42.     for i from 1 to numelems(ranges) do
  43.         if numelems(ranges[i]) <> 2 then
  44.             error "范围参数格式错误,需要形如[[min1, max1], [min2, max2]]";
  45.         end if;
  46.         range_data := ranges[i];
  47.         printf("\n===== 正在分析范围 %a-%a (步长基数=%a) =====\n",
  48.                range_data[1], range_data[2], step_base);
  49.         result := FindLongestArithmeticInRange(range_data[1], range_data[2], step_base, max_steps);
  50.     end do;
  51. end proc;

  52. # 示例用法:搜索间隔为100*n的序列
  53. ranges := [
  54.     [3, 10^4],        # 第一段:3到10000
  55.     [10^4 + 1, 10^5], # 第二段:10001到100000
  56.     [10^5 + 1, 10^6]  # 第三段:100001到1000000
  57. ];

  58. # 运行分析(步长基数=100,最多10步)
  59. ArithmeticSegmentAnalysis(ranges, 100, 10);

  60. # 单独测试特定起始素数
  61. # test_seq := PrimeSequenceArithmetic(7, 100, 10);
  62. # print("测试序列:", test_seq);
复制代码

运行结果:
起始素数=31,长度=7
起始素数=69163,长度=9
起始素数=117673,长度=8
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 前天 15:09 | 显示全部楼层
本帖最后由 数论爱好者 于 2025-5-7 15:11 编辑

1656283,长度10
1656283,1656383, 1656583, 1656883, 1657283, 1657783, 1658383, 1659083, 1659883, 1660783
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 前天 18:34 | 显示全部楼层
  1. g=Accumulate[100*Range[0,15]];n=3;Do[p=Prime@r;If[PrimeQ[100+p],s=TakeWhile[p+g,PrimeQ];d={Length@s,p,s};If[d[[1]]>n,Print[d];n=d[[1]]]],{r,2,2*10^8}]
复制代码


{4,7,{7,107,307,607}}
{5,13,{13,113,313,613,1013}}
{7,31,{31,131,331,631,1031,1531,2131}}
{8,53617,{53617,53717,53917,54217,54617,55117,55717,56417}}
{9,69163,{69163,69263,69463,69763,70163,70663,71263,71963,72763}}
{10,1656283,{1656283,1656383,1656583,1656883,1657283,1657783,1658383,1659083,1659883,1660783}}
{11,223502887,{223502887,223502987,223503187,223503487,223503887,223504387,223504987,223505687,223506487,223507387,223508387}}
{12,2283613699,{2283613699,2283613799,2283613999,2283614299,2283614699,2283615199,2283615799,2283616499,2283617299,2283618199,2283619199,2283620299}}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 前天 19:22 来自手机 | 显示全部楼层
这个可以通过提前筛选减小搜索范围。
我们需要寻找p使得,p+k(k+1)/2对于一定范围的k都是素数,于是它们都不是小素数的倍数。首先p不能是2,5,然后对于所有其它小素数q,我们要求8p-1+(2k+1)^2都不是q的倍数,也就是8p-1不是q的平方剩余的相反数,所以每使用一个小素数q,大概可以淘汰一半左右的可能,于是比如我们使用模3*7*11*13*17*19*23,那么至少可以通过预先筛选提升百倍以上速度

点评

有道理,我试试  发表于 前天 22:36
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 前天 22:36 | 显示全部楼层
{13,4013712511,{4013712511,4013712611,4013712811,4013713111,4013713511,4013714011,4013714611,4013715311,4013716111,4013717011,4013718011,4013719111,4013720311}}

点评

我的代码大数跑不动,你们很厉害  发表于 前天 23:52
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 昨天 01:32 | 显示全部楼层
northwolves 发表于 2025-5-7 22:36
{13,4013712511,{4013712511,4013712611,4013712811,4013713111,4013713511,4013714011,4013714611,4013715 ...

步长基数100与式子50*n*(n+1)等价,其实是p+100, 300, 600, 1000, 1500, 2100, 2800, 3600...系列
步长基数200与式子100*n*(n+1)等价,其实是p+200, 600, 1200, 2000, 3000, 4200, 5600, 7200, 9000...系列
10万到100万中,
步长基数=200,初步找到长度=8,起始素数:158591
步长基数=300,150*n*(n+1)系列,长度=11,起始素数818099,
估计能够找到长度为20的数
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 昨天 07:42 | 显示全部楼层
数论爱好者 发表于 2025-5-8 01:32
步长基数100与式子50*n*(n+1)等价,其实是p+100, 300, 600, 1000, 1500, 2100, 2800, 3600...系列
步长基 ...

编写具有挑战性的代码:寻找连续素数的长度,只记录首个成立的长度,找到即记录,重复值的长度不记录,不验证,直接跳过寻找下一个长度.公式:k*n*(n+1)+p,公式k的取值范围暂定1到1万,n的取值范围可以到10^10,p为素数,取值可以到10^15-1.请输出k值,n值和p值
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 昨天 16:20 | 显示全部楼层
数论爱好者 发表于 2025-5-8 07:42
编写具有挑战性的代码:寻找连续素数的长度,只记录首个成立的长度,找到即记录,重复值的长度不记录,不验证, ...

理想很丰满,希望系统研究这一类型的规律,现实很骨感,代码不知跑到猴年马月.
降低要求,分类研究
先令k=1,古人的结果
n*(n+1)+5
n*(n+1)+11
n*(n+1)+17
n*(n+1)+41
令k=2,跑100万以内
最大长度17,发现:2*n*(n+1)+19
k=3,有待下回分解
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 昨天 18:04 | 显示全部楼层
这个3楼的代码稍改一下即可,跑1000万以内:

  1. f[n_]:=(g=Table[n*k(k+1),{k,0,50}];l=3;sol={};For[r=2,r<=664579,r++,p=Prime@r;If[PrimeQ[g[[2]]+p],s=TakeWhile[p+g,PrimeQ];d={n,p,s,Length@s};If[d[[4]]>l,sol=d;l=d[[4]]]]];sol);Do[Print[f[n]],{n,30}]
复制代码


{1,41,{41,43,47,53,61,71,83,97,113,131,151,173,197,223,251,281,313,347,383,421,461,503,547,593,641,691,743,797,853,911,971,1033,1097,1163,1231,1301,1373,1447,1523,1601},40}
{2,19,{19,23,31,43,59,79,103,131,163,199,239,283,331,383,439,499,563,631},18}
{3,23,{23,29,41,59,83,113,149,191,239,293,353,419,491,569,653,743,839,941,1049,1163,1283,1409},22}
{4,653,{653,661,677,701,733,773,821,877,941,1013,1093,1181,1277,1381,1493,1613,1741,1877},18}
{5,13,{13,23,43,73,113,163,223,293,373,463,563,673},12}
{6,31,{31,43,67,103,151,211,283,367,463,571,691,823,967,1123,1291,1471,1663,1867,2083,2311,2551,2803,3067,3343,3631,3931,4243,4567,4903},29}
{7,17,{17,31,59,101,157,227,311,409,521,647,787,941,1109,1291,1487,1697},16}
{8,31,{31,47,79,127,191,271,367,479,607,751,911,1087,1279,1487},14}
{9,43,{43,61,97,151,223,313,421,547,691,853,1033,1231,1447},13}
{10,557,{557,577,617,677,757,857,977,1117,1277},9}
{11,997,{997,1019,1063,1129,1217,1327,1459,1613,1789,1987,2207},11}
{12,239,{239,263,311,383,479,599,743,911,1103,1319,1559,1823,2111,2423},14}
{13,4001,{4001,4027,4079,4157,4261,4391,4547,4729,4937,5171,5431,5717,6029,6367},14}
{14,2383,{2383,2411,2467,2551,2663,2803,2971,3167,3391,3643,3923,4231,4567,4931,5323,5743},16}
{15,17,{17,47,107,197,317,467,647,857,1097,1367,1667,1997,2357},13}
{16,2485547,{2485547,2485579,2485643,2485739,2485867,2486027,2486219,2486443,2486699,2486987,2487307,2487659,2488043},13}
{17,607,{607,641,709,811,947,1117,1321,1559,1831,2137,2477,2851,3259,3701,4177},15}
{18,67391,{67391,67427,67499,67607,67751,67931,68147,68399,68687,69011,69371,69767,70199,70667,71171,71711,72287},17}
{19,1409,{1409,1447,1523,1637,1789,1979,2207,2473,2777,3119,3499,3917,4373},13}
{20,43,{43,83,163,283,443,643,883,1163,1483},9}
{21,6577,{6577,6619,6703,6829,6997,7207,7459,7753,8089,8467,8887,9349},12}
{22,17,{17,61,149,281,457,677,941,1249,1601,1997,2437},11}
{23,1032373,{1032373,1032419,1032511,1032649,1032833,1033063,1033339,1033661,1034029,1034443,1034903,1035409},12}
{24,3193873,{3193873,3193921,3194017,3194161,3194353,3194593,3194881,3195217,3195601,3196033},10}
{25,47,{47,97,197,347,547,797,1097,1447,1847,2297,2797,3347,3947,4597,5297,6047},16}
{26,6397,{6397,6449,6553,6709,6917,7177,7489,7853,8269,8737,9257,9829,10453},13}
{27,19219,{19219,19273,19381,19543,19759,20029,20353,20731,21163,21649,22189,22783,23431,24133,24889},15}
{28,2523083,{2523083,2523139,2523251,2523419,2523643,2523923,2524259,2524651,2525099,2525603},10}
{29,810079,{810079,810137,810253,810427,810659,810949,811297,811703,812167,812689,813269,813907,814603},13}
{30,3253,{3253,3313,3433,3613,3853,4153,4513,4933,5413,5953,6553,7213,7933,8713},14}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2025-5-9 21:42 , Processed in 0.027348 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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