找回密码
 欢迎注册
查看: 20|回复: 5

[原创] 平方数立方数

[复制链接]
发表于 昨天 19:09 | 显示全部楼层 |阅读模式

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

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

×
定义一种特殊的三元组(a,b,c),满足以下条件:

1.a,b,c均为正整数,且a≤b≤c;

2.a^2+b^3是一个完全平方数(即存在整数k使得a^2+b^3=k^2);
3.a×b×c是一个完全立方数(即存在整数m使得a×b×c=m^3)。

问题:
给定一个上限N(例如N=10^18),求:

1.所有满足条件的三元组(a,b,c),其中c≤N;

2.满足条件的三元组数量随N增长的渐近表达式(需数学证明);

3.高效算法(时间复杂度低于Ο(N)),并分析其最优性。

示例:(28,8,98),举例可能不恰当,不严谨,意思意思而已
28^2+8^3=784+512=1296=36^2(满足条件1)
28*8*98=21952=28^3(满足条件2)
若限制a,b,c两两互质,解的数量如何变化?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 昨天 21:26 | 显示全部楼层
3,3,24
3^2+3^3=6^2
3*3*24=6^3
a≤b≤c这个条件取消掉,a,b,c为正整数即可
a,b,c互质的找找看
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 18 小时前 | 显示全部楼层
                 满足条件的三元组c≤100
   [[1, 2, 4], [1, 2, 32], [3, 3, 3], [3, 3, 24], [3, 3, 81]],解才有这几个,两两互质的一个也没有找到

点评

abc之积为立方数,怎么可能两两互质??  发表于 11 小时前
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 18 小时前 | 显示全部楼层
数论爱好者 发表于 2025-4-26 00:00
满足条件的三元组c≤100
   [[1, 2, 4], [1, 2, 32], [3, 3, 3], [3, 3, 24], [3, 3, 81] ...
  1. FindAllTriples := proc(N)
  2.     local b, factors, divisors, pairs, d1, d2, a, k, m, c, triples;
  3.     triples := [];

  4.     # 遍历所有可能的b值(修正范围:b ≤ N,而非N^(1/3))
  5.     for b from 1 to N do
  6.         # 生成b^3的所有因数
  7.         factors := ifactors(b^3)[2];
  8.         divisors := generate_divisors(factors);
  9.         pairs := generate_ordered_pairs(divisors, b^3);  # 传入b^3的值用于验证
  10.         
  11.         # 处理每个因数对 (d1, d2)
  12.         for pair in pairs do
  13.             d1 := pair[1];
  14.             d2 := pair[2];
  15.             # 检查d1和d2的奇偶性相同
  16.             if type(d1 + d2, even) then
  17.                 # 计算a和k
  18.                 a := (d2 - d1) / 2;
  19.                 k := (d2 + d1) / 2;
  20.                 # 检查a是否为整数且大于0
  21.                 if a > 0 and type(a, integer) then
  22.                     # 计算满足条件2的c值
  23.                     min_m := ceil((a*b)^(1/3));
  24.                     for m from min_m do
  25.                         c := m^3 / (a*b);
  26.                         if c > N then break end if;
  27.                         if c::posint then
  28.                             triples := [op(triples), [a, b, c]];
  29.                         end if;
  30.                     end do;
  31.                 end if;
  32.             end if;
  33.         end do;
  34.     end do;

  35.     return triples;
  36. end proc:

  37. # 辅助函数1:生成所有因数
  38. generate_divisors := proc(factors)
  39.     local divisors, p, e, temp, i, j;
  40.     divisors := [1];
  41.     for f in factors do
  42.         p := op(1, f);
  43.         e := op(2, f);
  44.         temp := [];
  45.         for d in divisors do
  46.             for j from 0 to e do
  47.                 temp := [op(temp), d * p^j];
  48.             end do;
  49.         end do;
  50.         divisors := temp;
  51.     end do;
  52.     return divisors;
  53. end proc:

  54. # 辅助函数2:生成有序因数对,并验证d1*d2 = target
  55. generate_ordered_pairs := proc(divisors, target)
  56.     local pairs, i, j, d1, d2;
  57.     pairs := [];
  58.     for i from 1 to nops(divisors) do
  59.         for j from i to nops(divisors) do
  60.             d1 := divisors[i];
  61.             d2 := divisors[j];
  62.             if d1 * d2 = target then
  63.                 pairs := [op(pairs), [d1, d2]];
  64.             end if;
  65.         end do;
  66.     end do;
  67.     return pairs;
  68. end proc:

  69. # 示例验证(N=100)
  70. result := FindAllTriples(100);
  71. print("所有符合条件的三元组:");
  72. print(result);
复制代码

运行结果:
[[1, 2, 4], [1, 2, 32], [3, 3, 3], [3, 3, 24], [3, 3, 81], [6, 4, 9], [6, 4, 72], [10, 5, 20], [21, 7, 63], [28, 8, 98], [8, 8, 1], [8, 8, 8], [8, 8, 27], [8, 8, 64], [120, 9, 25], [36, 9, 18], [45, 10, 60], [6, 12, 3], [6, 12, 24], [6, 12, 81], [24, 12, 6], [24, 12, 48], [48, 16, 18], [136, 17, 17], [27, 18, 12], [27, 18, 96], [171, 19, 57], [80, 20, 5], [80, 20, 40], [375, 24, 3], [375, 24, 24], [375, 24, 81], [120, 24, 75], [1089, 27, 33], [81, 27, 9], [81, 27, 72], [63, 28, 42], [378, 28, 7], [378, 28, 56], [15, 30, 60], [64, 32, 2], [64, 32, 16], [64, 32, 54], [88, 33, 99], [405, 36, 50], [162, 36, 1], [162, 36, 8], [162, 36, 27], [162, 36, 64], [960, 36, 50], [288, 36, 36], [270, 40, 20], [60, 40, 90], [360, 40, 15], [270, 45, 60], [48, 48, 6], [48, 48, 48], [192, 48, 12], [192, 48, 96], [125, 50, 20], [1485, 55, 55], [847, 56, 77], [28, 56, 14], [15, 60, 30], [63, 63, 63], [567, 63, 7], [567, 63, 56], [384, 64, 36], [1088, 68, 34], [216, 72, 3], [216, 72, 24], [216, 72, 81], [375, 75, 15], [640, 80, 10], [640, 80, 80], [3240, 81, 75], [972, 81, 2], [972, 81, 16], [972, 81, 54], [14, 84, 63], [3000, 96, 6], [3000, 96, 48], [343, 98, 28], [1875, 100, 18], [750, 100, 45]]
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 10 小时前 | 显示全部楼层
可以穷举abc整体互质的解:
  1. f[e_]:=Values@Solve[a^2+b^3==n^2&&a b c==m^3&&GCD[a,b,c]==1&&Max[a,b,c]<=e,{a,b,c,n,m},PositiveIntegers];v=f[200];{Length@v,v[[All, ;; 3]]}
复制代码


{13,{{1,2,4},{1,2,32},{1,2,108},{6,4,9},{8,8,1},{8,8,27},{8,8,125},{25,6,180},{120,9,25},{120,9,200},{162,36,1},{162,36,125},{200,24,45}}}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2025-4-26 18:34 , Processed in 0.027473 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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