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

[求助] 可表示为连续正整数平方和的四次方数

[复制链接]
发表于 2025-5-3 23:02:24 | 显示全部楼层
northwolves 发表于 2025-5-3 22:46
我打开了10个进程计算到大约10^7了,目前就发现10个解:
13, 295, 330, 364, 1085, 5005, 6305, 15516, 415 ...

经过对比,wayne的代码不是最快.我用Wolfram Mathematica 8,验证区间199万至200万,两分钟后得出:{1990368,{{47761921,1146120288,549179184}}},先给出一个答案,继续运行,平均每秒跑3个整数.5分钟后跑到1990836,距离200万还很远.但是,我的maple代码在450秒跑完199万至200万,然后一次性给出答案.
  1. restart;
  2. with(numtheory):
  3. with(Threads):

  4. findN_highspeed := proc(m_start, m_end)
  5.     local m, mm, div, d, S, p, solutions;
  6.     solutions := [];
  7.     for m from m_start to m_end do
  8.         mm := 12*m^4;
  9.         div := select(d -> d^3 - d < mm, divisors(mm)[2..-2]);
  10.         
  11.         for d in div do
  12.             S := (mm/d + 1 - d^2)/3;
  13.             if S <= 0 then next; end if;
  14.             
  15.             if issqr(S) and type(sqrt(S), integer) then
  16.                 p := (sqrt(S) + 1 - d)/2;
  17.                 if type(p, posint) and (d - sqrt(S)) mod 2 = 1 then
  18.                     printf("Found m=%d, d=%d, p=%d\n", m, d, p);
  19.                     solutions := [op(solutions), m];
  20.                     break;
  21.                 end if;
  22.             end if;
  23.         end do;
  24.     end do;
  25.     return solutions;
  26. end proc;

  27. # 并行执行设置(分割搜索范围)
  28. search_range := 1990000..2000000:
  29. num_threads := 4;
  30. total_range := rhs(search_range) - lhs(search_range) + 1;
  31. step := iquo(total_range, num_threads, 'remainder');

  32. ranges := [seq(
  33.     lhs(search_range) + (i-1)*step ..
  34.     `if`(i <= remainder, lhs(search_range) + i*step, lhs(search_range) + i*step - 1),
  35.     i = 1..num_threads
  36. )];

  37. # 启动并行计算
  38. results := Threads:-Map(r -> findN_highspeed(op(1,r), op(2,r)), ranges);
  39. final_result := ListTools:-Flatten(results);
复制代码


连续整数平方和.PNG

点评

我的电脑最差,单核2GB内存,4线程能否开启,并不知情  发表于 2025-5-3 23:08

评分

参与人数 1威望 +8 金币 +8 贡献 +8 经验 +8 鲜花 +8 收起 理由
northwolves + 8 + 8 + 8 + 8 + 8 赞一个!

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-5-3 23:21:49 | 显示全部楼层
1) 你说的不快,是啥意思,是你改进了Mathematica代码吗,改进的地方在哪,
还是你用2010年发布的 Mathematica 8 跟 Maple比吗,你的 Maple也是2010年的吗。先不说拿15年前的A产品跟现在的B产品比较是否合理,就算都是同一年发布的,不同的软件比较起来也没啥好讨论的余地。
更何况我粗略看了你的Maple代码,算法逻辑好像是一样的。

2) 要打破记录不难。 换成C/Rust肯定可以很快。
再不济,用大家的代码稍微改改,随机指定几个区间,凭借运气也能碰到几个, 关键是是要没有遗漏的找到所有的解。

点评

C建议用flint库  发表于 2025-5-7 08:26
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-5-4 00:16:06 | 显示全部楼层
wayne 发表于 2025-5-3 23:21
1) 你说的不快,是啥意思,是你改进了Mathematica代码吗,改进的地方在哪,
还是你用2010年发布的 Mathemat ...

你说的也对,参考你的代码,并无实质性改进,maple版本2013年的....
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-5-4 01:01:14 | 显示全部楼层
数论爱好者 发表于 2025-5-4 00:16
你说的也对,参考你的代码,并无实质性改进,maple版本2013年的....

二者确实不能够比较,Mathematica要好得多.
Mathematica 8:CPU占用50%,物理内存占用27%,Mathematica 8软件内存100MB左右
maple 17:CPU占用70%-100%,物理内存占用60%,maple 17软件内存1.2GB左右

点评

你这里的是指单核的Mathematica和多核的Maple吧  发表于 2025-5-4 08:39
从资源占用率来看,Mathematica代码跟Maple代码的具体算法实现也不同。  发表于 2025-5-4 08:38
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2025-5-4 07:57:18 | 显示全部楼层
对于已有的前10个解:
m = {13, 295, 330, 364, 1085, 5005, 6305, 15516, 415151,  1990368};
n = {2, 177, 352, 1536, 2401, 40898, 60625, 185761,  19512097, 47761921}

m因数分解:{{{13,1}},{{5,1},{59,1}},{{2,1},{3,1},{5,1},{11,1}},{{2,2},{7,1},{13,1}},{{5,1},{7,1},{31,1}},{{5,1},{7,1},{11,1},{13,1}},{{5,1},{13,1},{97,1}},{{2,2},{3,2},{431,1}},{{11,2},{47,1},{73,1}},{{2,5},{3,2},{6911,1}}}

n因数分解:{{{2,1}},{{3,1},{59,1}},{{2,5},{11,1}},{{2,9},{3,1}},{{7,4}},{{2,1},{11,2},{13,2}},{{5,4},{97,1}},{{431,2}},{{11,2},{47,2},{73,1}},{{6911,2}}}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-5-4 08:37:05 | 显示全部楼层
northwolves 发表于 2025-5-4 07:57
对于已有的前10个解:
m = {13, 295, 330, 364, 1085, 5005, 6305, 15516, 415151,  1990368};
n = {2, 17 ...


计算了一下,发现只有$\frac{12m^4}{n}$是整数,而$\frac{m}{n},\frac{m^2}{n},\frac{m^3}{n},\frac{m^4}{n}$都不能保证。

点评

已有的10个解,6m^4/n 都是整数  发表于 2025-5-4 09:46
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2025-5-4 08:44:30 | 显示全部楼层
m = 9491625, n = 284731876 是一个很接近的解,可惜p不是整数。

点评

包括负整数的你可以提交(m,n) 2个序列,  发表于 2025-5-4 09:40
半整数吗, 按道理 半整数 和 负的整数 也可以先收纳 进来  发表于 2025-5-4 08:47
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2025-5-4 08:44:38 | 显示全部楼层
A001032 is helpful filting the divisors of 12*m^4.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-5-4 09:03:08 | 显示全部楼层
也就是说,咱们应该先讨论 【可表示为连续正整数平方和的平方数】

点评

求出n来再穷举m似乎效率也不高  发表于 2025-5-4 10:04
A001032这里列举到250000了  发表于 2025-5-4 09:34
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2025-5-4 09:38:35 | 显示全部楼层
https://oeis.org/draft/A383359

David A. Corneth 用很短时间就刷新到2*10^7了。我的机子现在还在计算1.4*10^7

点评

在算法原理相同的情况下  发表于 2025-5-4 10:12
换成C/rust可以非常快的。至少提升100倍  发表于 2025-5-4 10:12
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2025-5-17 04:33 , Processed in 0.034788 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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