|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
# include <stdio.h>
int max(int x, int y) //定义形参x, y
{
if (x > y)
{return x;} //返回值给主程序中实参 t 为X
else {return y;} //返回值给主程序中实参 t 为y
}
int min(int x, int y) //定义形参x, y
{
if (x > y)
{return y;} //返回值给主程序中实参 p 为y
else {return x;} //返回值给主程序中实参 p 为x
}
// return x + y - max(x, y);
void main()
{
int q, p; // q 中放的是MAX, p 中放的是MIN
int i, t; // i 再次在此指倍数,t在此指的是?
printf("请输入第一个数: ");
scanf("%d", &q);
printf("请输入第二个数: ");
scanf("%d", &p);
t = max(q, p); //就这个地方的 t 起什么作用的?为什么没了就不行?
p = min(q, p);
q = t;
i = 1;
while (i <= p) //从此处开始判断两个数的
{
if ((q * i) % p == 0)
{
printf("%d,%d的最小公倍数是 %d\n", p, q, q * i);
i = p;
}
i++;
}
}
各位大佬,求救。。。。。
我仔细看了一下,你这代码根本不是辗转相除法。。。不好意思,不过你可以试试自己写一个
来解释一下这段代码的实现,过程如下,取出两个数中的较大者,然后不断取它的倍数,直到它恰好能被另一个小的数整除
举个例子,q = 6,p = 9,通过t将q设置为9,p设置为6,然后循环判断9的倍数是否被6整除,当i=2时,满足条件,输出
|
|