数学研发论坛

 找回密码
 欢迎注册
查看: 251|回复: 2

[求助] 连分式因子分解程序,如何修改

[复制链接]
发表于 2021-7-11 15:24:43 | 显示全部楼层 |阅读模式

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

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

x
  1. d = 1241445153765162090376032461564730757085137334450817128010073; \
  2. pell = -1; P[0] = 0; Q[0] = 1;
  3. t[0] = (P[0] + Sqrt[d])/Q[0]
  4. a[0] = IntegerPart[t[0]];
  5. i = 0; While[
  6. i <= 100 && (t[i] != 1/(t[0] - a[0]) && P[i] != pell) || i == 1,
  7. P[i + 1] = Q[i] a[i] - P[i];
  8. Q[i + 1] = (d - P[i + 1]^2)/Q[i];
  9. t[i + 1] = (P[i + 1] + Sqrt[d])/Q[i + 1];
  10. a[i + 1] = Floor[t[i + 1]];
  11. p[-1] = 0; p[0] = 1; p[i + 1] = a[i] p[i] + p[i - 1];
  12. q[-1] = 1; q[0] = 0; q[i + 1] = a[i] q[i] + q[i - 1];
  13. If[Q[i + 1] == Q[i] || P[i + 1] == P[i] ||
  14.    FractionalPart[Sqrt[Q[i + 1]]] == 0, Break[]];
  15. Print[{i, Q[i], P[i], a[i]}] i++];
  16. {i, Q[i], P[i], a[i]}
  17. {i + 1, Q[i + 1], P[i + 1], a[i + 1]}
  18. GCD[Q[0] p[i + 1] - P[0] q[i + 1] + Sqrt[Q[i + 1] Q[0]], d]
复制代码


怎样将以上代码修改为动态计算,即不保存中间的运算过程,直接输出最后计算结果
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2021-7-15 09:42:06 | 显示全部楼层
参考代码

  1. Clear[test, x, a, f, t]
  2. d = 4993; pell = 65; p = 1; q = 2;
  3. x[p_, q_] := (p + Sqrt[d])/q;
  4. a[p_, q_] := IntegerPart[x[p, q]];
  5. t = 1/(x[p, q] - a[p, q]);
  6. f[{_, {i_, p_, q_}}] := {{i, p, q}, {i + 1, q a[p, q] - p, (d - (q a[p, q] - p)^2)/q}}
  7. test[{_, {i_, p_, q_}}] := (x[p, q] != t && p != pell) || i == 1
  8. First@NestWhile[f, {Null, {0, p, q}}, test] // AbsoluteTiming
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2021-7-18 13:17:25 | 显示全部楼层
wayne帮帮我吧
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2021-7-28 12:36 , Processed in 0.050022 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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