用欧拉算法求整数s,t,使253s+449t=(253,449),可以写出完整的算法吗?

用欧拉算法求整数s,t,使253s+449t=(253,449),可以写出完整的算法吗?,第1张

用辗转相除法求出最大公因数(253, 449):

449 = 1 * 253 + 196

253 = 1 * 196 + 57

196 = 3 * 57 + 25

57 = 2 * 25 + 7

25 = 3 * 7 + 4

7 = 1 * 4 + 3

4 = 1 * 3 + 1

因此,最大公因数为1。

反向递归求解:

从上面的辗转相除法的最后一步开始,可以反向递归求解s和t的值,具体过程如下:

1 = 4 - 1 * 3

3 = 7 - 1 * 4

4 = 25 - 3 * 7

7 = 25 - 3 * 4

25 = 57 - 2 * 25

57 = 196 - 3 * 57

196 = 253 - 1 * 196

253 = 449 - 1 * 196

将上述式子带入原方程中可得:

(253) * (-57) + (449) * (32) = 1

因此,s=-57,t=32,是使得253s+449t=(253,449)成立的一组整数解。

完整的欧拉算法流程如下:

输入需要求解的两个数a和b,计算它们的最大公因数gcd(a,b)。

用辗转相除法求解最大公因数gcd(a,b)。

从辗转相除法的最后一步开始,反向递归求解s和t的值,具体过程如下:

设r0=a,r1=b,将最后一步的等式写成r1=s1r0+t1r1,其中s1=1,t1=-(r0/r1)。

设i=1,ri+1=r(i-1)-siri,ti+1=t(i-1)-tiri,直到ri=1为止。

输出s和t的值,使得as+bt=gcd(a,b)成立。

这是个没有通常意义极限的病态级数,比如:

(1-1)+(1-1)+..+(1-1)+...=0

1+(-1+1)+(-1+1)+... =1

根据1+x+...+x^n+..=1/(1-x),虽然收敛域(-1,1),但把(-1)代进去就得到1/2,又是另一种答案

在数学分析的高级教程中应该对这种病态级数的和有一个严格定义,使得计算出的结果唯一。但我对这方面的知识也不了解。你可以去找找相关资料。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11294498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存