想法
其实想法比较简单,就是从x和y中选取最大数, 依次递增,看是否能被x和y同时整除,若是则为公倍数。同样的,取x和y最小的看是否整除x和y就能判断是否为公约数
代码
#include<stdio.h>
int common_div(int x, int y)
{
int c = (x < y) ? x : y;
for (; c > 0; c--)
if (x % c == 0 && y % c == 0)
return (c);
return 0;
}
int common_mul(int x, int y)
{
int c = (x > y) ? x : y;
for (; c <= x * y; c++)
if (c % x == 0 && c % y == 0)
return (c);
return 0;
}
int main()
{
int common_div(int x, int y);
int common_mul(int x, int y);
int m = 0, n = 0, k1 = 0, k2 = 0;
printf("请输入需要求公倍数与公约数的两个整数(空格隔开):\n");
scanf("%d %d", &m, &n);
k1 = common_div(m, n);
k2 = common_mul(m, n);
printf("%d和%d的最大公约数为为%d", k2);
printf("%d和%d的最最小公倍数为%d", k1);
return 0;
}
Comments NOTHING