关于求最大公约数

shzxxx
关于求最大公约数

[table=95%][tr][td][font=FixedSys][color=#000000][color=#0000CC]#[/color][color=#FF0000]include[/color] [color=#0000CC]<[/color]stdio[color=#0000CC].[/color]h[color=#0000CC]>[/color]
[color=#0000FF]void[/color] main[color=#0000CC]([/color][color=#0000CC])[/color]
[color=#0000CC]{[/color]
&nbsp;&nbsp;&nbsp;&nbsp;[color=#0000FF]int[/color] p[color=#0000CC],[/color]r[color=#0000CC],[/color]n[color=#0000CC],[/color]m[color=#0000CC],[/color]temp[color=#0000CC];[/color]
&nbsp;&nbsp;&nbsp;&nbsp;[color=#FF0000]printf[/color][color=#0000CC]([/color][color=#FF00FF]"请输入两个正整数"[/color][color=#0000CC])[/color][color=#0000CC];[/color]
&nbsp;&nbsp;&nbsp;&nbsp;[color=#FF0000]scanf[/color][color=#0000CC]([/color][color=#FF00FF]"%d,%d,"[/color][color=#0000CC],[/color][color=#0000CC]&[/color]n[color=#0000CC],[/color][color=#0000CC]&[/color]m[color=#0000CC])[/color][color=#0000CC];[/color]
&nbsp;&nbsp;&nbsp;&nbsp;[color=#0000FF]if[/color][color=#0000CC]([/color]n[color=#0000CC]<[/color]m[color=#0000CC])[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[color=#0000CC]{[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp[color=#0000CC]=[/color]n[color=#0000CC];[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n[color=#0000CC]=[/color]m[color=#0000CC];[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m[color=#0000CC]=[/color]temp[color=#0000CC];[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[color=#0000CC]}[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[color=#0000CC]=[/color]n[color=#0000CC]*[/color]m[color=#0000CC];[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[color=#0000FF]while[/color][color=#0000CC]([/color]m!=0[color=#0000CC])[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[color=#0000CC]{[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[color=#0000CC]=[/color]n[color=#0000CC]%[/color]m[color=#0000CC];[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n[color=#0000CC]=[/color]m[color=#0000CC];[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m[color=#0000CC]=[/color]r[color=#0000CC];[/color]&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[color=#0000CC]}[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[color=#FF0000]printf[/color][color=#0000CC]([/color][color=#FF00FF]"它们的最大公约数为:%d/n"[/color][color=#0000CC],[/color]n[color=#0000CC])[/color][color=#0000CC];[/color]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[color=#FF0000]printf[/color][color=#0000CC]([/color][color=#FF00FF]"它们的最小公倍数为:%d/n"[/color][color=#0000CC],[/color]p[color=#0000CC]/[/color]n[color=#0000CC])[/color][color=#0000CC];[/color]
&nbsp;&nbsp;&nbsp;&nbsp;[color=#0000CC]}[/color]
&nbsp;&nbsp;&nbsp;&nbsp;[/color][/font][/td][/tr][/table]

这是TC++的源程序

这里不明白                        r=n%m;
                        n=m;
                        m=r;       

先做了模运算,然后把值对调?
怎么n等于4的呢?
请帮忙解释下 谢谢了!

emacsnw
就是辗转相除法的直接实现。

小公猫
这种程序单步调试下应该就明白了~

shzxxx
谢谢楼上的各位

UnixStudier
Stein算法