本文目录一览:
C语言最大公约数和最小公倍数
教你一个规律,两个数最小公倍数与最大公约数的乘积等于这两个数本身,只要求出最大公约数,最小公倍数就出来了。
c语言编程,求两个数的最大公约数和最小公倍数
这样写:
#include
void main()
{
int m, n, i, r, temp;
printf("请输入第一个数的值:");
scanf("%d", m);
printf("请输入第二个数的值:");
scanf("%d", n);
if (n > m)
{
temp = m;
m = n;
n = temp;
}
i = n;
while (i % m != 0)
{
i = i + n;
}
printf("最小公倍数是:%d\n", i);
r = m % n;
while (r != 0)
{
m = n;
n = r;
r = m % n;
}
printf("最大公约数是:%d\n", n);
}
c语言求最大公约数和最小公倍数
c语言求最大公约数和最小公倍数。
求最小公倍数算法:
最小公倍数 = 两整数的乘积 ÷ 最大公约数
求最大公约数算法:
(1) 辗转相除法
有两整数 a 和 b:
- ① a % b 得余数 c
- ② 若 c = 0,则 b 即为两数的最大公约数
- ③ 若 c ≠ 0,则 a = b,b = c,再回去执行①
例如求 27 和 15 的最大公约数过程为:
27 ÷ 15 余 12
15 ÷ 12 余 3
12 ÷ 3 余 0
因此,3 即为最大公约数。
c语言如何求最大公约数和最小公倍数
#include <stdio.h>
int main()
{
int a, b, c, m, t;
printf("请输入两个数:\n");
scanf("%d%d", &a, &b);
if (a < b)
{
t = a;
a = b;
b = t;
}
m = a * b;
c = a % b;
while (c != 0)
{
a = b;
b = c;
c = a % b;
}
printf("最大公约数是:\n%d\n", b);
printf("最小公倍数是:\n%d\n", m / b);
}
扩展资料
算法思想
利用格式输入语句将输入的两个数分别赋给 a
和 b
,然后判断 a
和 b
的关系,如果 a
小于 b
,则利用中间变量 t
将其互换。
再利用辗转相除法求出最大公约数,进而求出最小公倍数。最后用格式输出语句将其输出。
#include <stdio.h>
是在程序编译之前要处理的内容,称为编译预处理命令。编译预处理命令还有很多,它们都以“#”开头,并且不用分号结尾,所以是 C 语言的程序语句。
c语言最大公约数最小公倍数
最大公约数 C 语言编程的常用思路是:按照从大(两个整数中较小的数)到小(到最小的整数 1)的顺序求出第一个能同时整除两个整数的自然数,即为所求。
两个数的最大公约数有可能是其中的小数,所以在按从大到小顺序找寻最大公约数时,循环变量 i
的初值从小数 n
开始依次递减,去寻找第一个能同时整除两整数的自然数,并将其输出。
需要注意的是,虽然判定条件是 i > 0
,但在找到第一个满足条件的 i
值后,循环没必要继续下去,如,25 和 15,最大公约数是 5,对于后面的 4、3、2、1 没必要再去执行,但此时判定条件仍然成立,要结束循环只能借助 break
语句。
具体代码实现:
#include <stdio.h>
int main()
{
int m, n, temp, i;
printf("Input m n:");
scanf("%d%d", &m, &n);
if (m < n) /* 比较大小,使得 m 中存储大数,n 中存储小数 */
{ /* 交换 m 和 n 的值 */
temp = m;
m = n;
n = temp;
}
for (i = n; i > 0; i--) /* 按照从大到小的顺序寻找满足条件的自然数 */
if (m % i == 0 && n % i == 0)
{ /* 输出满足条件的自然数并结束循环 */
printf("The GCD of %d and %d is:%d\n", m, n, i);
break;
}
return 0;
}
C语言最大公约数与最小公倍
void fun(int m, int n, int *p, int *q)
{
int k = m < n ? m : n;
while (m % k != 0 || n % k != 0) k--;
*p = k;
*q = m / k * n;
}
主函数自己写一下。p
是最大公约数指针,q
是最小公倍数指针。