wsc810 发表于 2020-2-12 19:43:00

连分式PQa算法修改

本帖最后由 wsc810 于 2020-2-12 20:03 编辑

Clear
d = 45113; pell = -1; P = 0; Q = 1;
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


程序想在Q=Q[ i ]或者P=P[ i ] 处终止,如何修改上述代码,谁会,非常感谢!!!

以下是最原始的程序

Clear; d = 45113; pell = -1; P = 0; Q = 1;
t = (P + Sqrt)/Q
a = IntegerPart];
i = 0; While[(t != 1/(t - a) && P != pell) || i == 1,
P = Q a - P;
Q = (d - P^2)/Q;
t = (P + Sqrt)/Q;
a = IntegerPart];
If == Q || P == P, Break[]];
Print[{i, Q, P, a}] i++];
{i, Q, P, a}
{i + 1, Q, P, a}


要求程序运行的最终结果,不必保留中间的运算值,也就是数组,将程序写成动态形式

页: [1]
查看完整版本: 连分式PQa算法修改