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,又是另一种答案
在数学分析的高级教程中应该对这种病态级数的和有一个严格定义,使得计算出的结果唯一。但我对这方面的知识也不了解。你可以去找找相关资料。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)