人说山西好风光 琵琶:c语言问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/09 11:53:13
#include<stdio.h>
void main()
{
int p,r,n,m,temp;
printf("请输入两个整数n,m:\n");
scanf("%d%d",&n,&m);
if(n<m)
{
temp=n;
n=m;
m=temp;
}
p=n*m;
while (m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("他们的最大公约数为:%d\n",n);
printf("他们的最小公倍数为:%d\n",p/n);
}
while是求最大公约数,但while花括号里的程序是怎样做到像辗转相除法一样运算的???

典型的基础C程序(先说你整的懂while语句吧,默认你懂)
首先这是数学公式,不是C的问题,打个比方:
M=11,N=3,首先11对3求余得2,把11付给N,2给M,再M对N求余=0,终止循环。
如果数字大了只是不停的把数付给M和N,然后求余,直到M=0结束循环。

程序中用了递推,而不是迭代或递归
用R做临时变亮
果然是好程序