C语言例题:输入两个正整数m和n,求其最大公约数和最小公倍数。

您所在的位置:网站首页 c语言for循环求最大公约数和最小公倍数 C语言例题:输入两个正整数m和n,求其最大公约数和最小公倍数。

C语言例题:输入两个正整数m和n,求其最大公约数和最小公倍数。

#C语言例题:输入两个正整数m和n,求其最大公约数和最小公倍数。| 来源: 网络整理| 查看: 265

大家好,又见面了,我是你们的朋友全栈君。

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。方法一:短除法

理论参考:百度知道

#include int main() { int m, n; // 两个输入的数 int x = 1, y; // x 是最大公约数,y是最小公倍数 int i = 2; // 累乘因子,从 2 开始 printf("请输入 m 和 n:\n"); scanf("%d%d", &m, &n); // 将输入的两个数调整位置,m 是较大的那个数,n 是较小的那个数 if (m < n) { m = m + n; n = m - n; // m(m + n) - n(n) = m m = m - n; // m(m + n) - n(m) = n } if (m % n == 0) { // 两个数成倍数 printf("最大公约数:%d\n最小公倍数:%d\n", n, m); } else { // 不成倍数 // 计算最大公约数 while (i < n) { // 当累乘因子小于较小值时,继续计算 if (m % i == 0 && n % i == 0) { // 同时为两个数的乘法因子 m /= i; n /= i; x *= i; } else { i++; } } // 计算最小公倍数 y = x * m * n; printf("最大公约数:%d\n最小公倍数:%d\n", x, y); } }方法二:遍历法# include int main() { int m, n; // 两个输入数 int x, y; // x 为最大公约数,y 为最小公倍数 int min, max; // max 为两个输入数中,较大的一个,min 为较小的一个 int i; // 用于 for 循环遍历 printf("请输入 m 和 n:\n"); scanf("%d %d", &m, &n); min = m > n ? n : m; max = m > n ? m : n; x = 1; // 公约数初始化设为 1 if (max % min == 0) { // 两个数是倍数关系 printf("最大公约数:%d\n最小公倍数:%d\n", min, max); } else { // 不成倍数 // 寻找最大公约数 for (i = 1; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3