一个c语言程序求最大公约数和最小公倍数
时间: 2024-05-15 13:01:18 浏览: 103
以下是一个C程序,用于计算两个整数的最大公约数和最小公倍数:
```c
#include <stdio.h>
int main()
{
int num1, num2, i, gcd, lcm;
printf("Enter two numbers: ");
scanf("%d%d", &num1, &num2);
// 计算最大公约数
for(i=1; i<=num1 && i<=num2; i++)
{
if(num1%i==0 && num2%i==0)
gcd = i;
}
// 计算最小公倍数
lcm = (num1*num2)/gcd;
printf("GCD of %d and %d is %d\n", num1, num2, gcd);
printf("LCM of %d and %d is %d\n", num1, num2, lcm);
return 0;
}
```
该程序首先要求用户输入两个整数。然后,它使用一个for循环来计算这两个数的最大公约数。在循环中,如果当前迭代的数字同时是num1和num2的因数,则将其存储在gcd变量中。最后,程序使用公式lcm = (num1*num2)/gcd来计算最小公倍数,并将其打印到屏幕上。
相关问题
C语言怎么求最大公约数和最小公倍数
C语言中可以使用辗转相除法来求最大公约数和最小公倍数。
求最大公约数的代码如下:
```c
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
```
求最小公倍数的代码如下:
```c
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
```
其中,`gcd`函数用于求最大公约数,`lcm`函数用于求最小公倍数。在`gcd`函数中,如果`b`等于0,则返回`a`,否则递归调用`gcd(b, a % b)`。在`lcm`函数中,先求出最大公约数,然后用两个数的乘积除以最大公约数即可得到最小公倍数。
C语言:求最大公约数和最小公倍数
以下是C语言求最大公约数和最小公倍数的两种方法:
1.利用辗转相除法求最大公约数和最小公倍数
```c
#include <stdio.h>
int main()
{
int a, b, x, y, t;
scanf("%d%d", &a, &b);
x = a;
y = b;
while (b != 0) // 辗转相除法求最大公约数
{
t = b;
b = a % b;
a = t;
}
printf("最大公约数为%d\n", a);
printf("最小公倍数为%d\n", x * y / a); // 最小公倍数等于两数之积除以最大公约数
return 0;
}
```
2.利用定义法求最大公约数和最小公倍数
```c
#include <stdio.h>
int main()
{
int a, b, i, j, max = 0;
scanf("%d%d", &a, &b);
for (i = a;; i++) // 求最小公倍数
{
if (i % a == 0 && i % b == 0) // 用大于等于a和b的数i(i大于等于a和b,无上限)分别除以a和b,同时除尽的第一个数即为最小公倍数
break; // 然后循环结束
}
for (j = 1; j <= a; j++) // 求最大公约数
{
if (a % j == 0 && b % j == 0) // 让a和b分别除以j(j从一开始,j有上限要小于等于a或b)
// 利用j++,如果a和b能同时除尽j
{
if (max < j) // 再判断j是不是小于a或b的最大公约数,不是则赋值最大值
max = j; // 这样求出来的max即为最大公约数
}
}
printf("最大公约数为%d\n", max);
printf("最小公倍数为%d\n", i); // 最小公倍数即为上面求出来的i
return 0;
}
```
阅读全文