wsc810 发表于 2021-7-11 15:24:43

连分式因子分解程序,如何修改

d = 1241445153765162090376032461564730757085137334450817128010073; \
pell = -1; P = 0; Q = 1;
t = (P + Sqrt)/Q
a = IntegerPart];
i = 0; While[
i <= 100 && (t != 1/(t - a) && P != pell) || i == 1,
P = Q a - P;
Q = (d - P^2)/Q;
t = (P + Sqrt)/Q;
a = Floor];
p[-1] = 0; p = 1; p = a p + p;
q[-1] = 1; q = 0; q = a q + q;
If == Q || P == P ||
   FractionalPart]] == 0, Break[]];
Print[{i, Q, P, a}] i++];
{i, Q, P, a}
{i + 1, Q, P, a}
GCD p - P q + Sqrt Q], d]


怎样将以上代码修改为动态计算,即不保存中间的运算过程,直接输出最后计算结果

wsc810 发表于 2021-7-15 09:42:06

参考代码

Clear
d = 4993; pell = 65; p = 1; q = 2;
x := (p + Sqrt)/q;
a := IntegerPart];
t = 1/(x - a);
f[{_, {i_, p_, q_}}] := {{i, p, q}, {i + 1, q a - p, (d - (q a - p)^2)/q}}
test[{_, {i_, p_, q_}}] := (x != t && p != pell) || i == 1
First@NestWhile // AbsoluteTiming

wsc810 发表于 2021-7-18 13:17:25

wayne帮帮我吧
页: [1]
查看完整版本: 连分式因子分解程序,如何修改