最大公约数
穷举法
#include <stdio.h>\
int main()
{
int x, y,i;
scanf("%d %d", &x, &y);
if (x < y)
{
int tmp = 0;
tmp = x;
x = y;
y = tmp;
}//找出两个数中较小的一个
for (i = y; i > 0; i--)
{
if (0 == y % i && 0 == x % i)
{
printf("这两个数的最大公约数为%d", i);
break;
}
}
return 0;
}
辗转相除法
#include <stdio.h>
int main()
{
int x, y,m;
scanf("%d %d", & x, &y);
while (m = x % y)//当两个数的余数为0时,y即为所求
{
x = y;
y = m;
}
printf("这两个数的最大公约数为%d", y);
return 0;
}
最小公倍数
穷举法
#include <stdio.h>
int main()
{
int x, y, i;
scanf("%d %d", &x, &y);
if (x < y)
{
int tmp = 0;
tmp = x;
x = y;
y = tmp;
}
for (i = x; ; i++)
{
if (0 == i % x && 0 == i % y)
{
printf("这两个数的最小公倍数为%d", i);
break;
}
}
return 0;
}
最大公约数求最小公倍数、
原理:有两个数x和y,两者的最大公约数是m,则最小公倍数为x*y/m。
#include <stdio.h>
int main()
{
int x, y, m, a, b;
scanf("%d %d", &x, &y);
a = x;
b = y;
while (m = x % y)//当两个数的余数为0时,y即为所求
{
x = y;
y = m;
}
printf("这两个数的最小公倍数为%d", a*b/y);
return 0;
}