最小公倍数问题
# 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++;
}
}
各位大佬,求救。。。。。
关键是到了主程序的t那块,就看不懂了。。。 请百度 “辗转相除法”
你先明白算法是怎么回事再说 BngThea 发表于 2017-12-28 10:40
请百度 “辗转相除法”
你先明白算法是怎么回事再说
额。。。https://gss0.bdstatic.com/94o3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike92%2C5%2C5%2C92%2C30/sign=135afa78db58ccbf0fb1bd6878b1d75b/377adab44aed2e732b50d5e68d01a18b86d6fabb.jpg
是这个算法图解吗?这个的话是看懂了。。。。
虽然现在对答案还有点迷糊。。。
总之先谢谢了{:5_99:} 我仔细看了一下,你这代码根本不是辗转相除法。。。不好意思,不过你可以试试自己写一个
来解释一下这段代码的实现,过程如下,取出两个数中的较大者,然后不断取它的倍数,直到它恰好能被另一个小的数整除
举个例子,q = 6,p = 9,通过t将q设置为9,p设置为6,然后循环判断9的倍数是否被6整除,当i=2时,满足条件,输出 BngThea 发表于 2017-12-28 11:55
我仔细看了一下,你这代码根本不是辗转相除法。。。不好意思,不过你可以试试自己写一个
来解释一下这段代 ...
谢谢谢谢谢谢谢谢,,,豁然开朗。。。。 本帖最后由 Ln_E 于 2017-12-28 17:22 编辑
更改 Ln_E 发表于 2017-12-28 17:17
# include
int main()
回错了。。。。是另一帖的内容
页:
[1]