C语言输入两个数,求他们的最大公约数和最小公倍数

总结了两种方法,第一种:
#include<stdio.h>

int main(){
int m, n;
	int i,j;
	int count = 0;                           //计时器
	scanf_s("%d%d", &m, &n);
	if (m < n) {
		for (i=m; i >=m/2 ; i --) {
			if (m%i == 0 && n%i == 0) {
				printf("其最大公因数为:%d\n", i);
			}
		}
		for (j = n; j <= m * n; j++) {
			if (j%n == 0 && j%m == 0) {
				count++;
				if (count == 1) {                                   //  第一次的条件才符合!
					printf("其最小公倍数为:%d\n", j);
				}
			}
		}
		count = 0;
	}
	if (m > n) {
		for (i = n; i >= n / 2; i--) {
			if (n%i == 0 && m%i == 0) {
				printf("其最大公因数为:%d\n", i);
			}
		}
		for (j = m; j <= m * n; j++) {
			if (j%m == 0 && j%n == 0) {
				count++;
				if (count == 1) {
					printf("其最小公倍数为:%d\n", j);
				}
			}
		}
		count = 0;
	}
	
	if(m == n) {
		printf("其最大公因数为:%d\n", n);
		printf("其最最小公倍数为:%d\n", n);
	}
return 0;
}

上面那种方法比较好理解,但代码陈杂,太长。第二种方法:

但要明确一个知识点:

4 % 5 == 4;   //一个小的数对一个大的数求余等于它本身。
5 % 4 == 1;   //这个就不用说了!

看代码!:利用交换法。

#include<stdio.h>
int main(){
int m, n, x, y,z;
            scanf_s("%d%dPlease input two number:", &m, &n);
			x = m; y = n;
			while (y != 0) {     //当y == 0时,跳出循环
				z = x % y;     //交换法 
				x = y;
				y = z;
			}
			printf("它们的最大公约数为:%d\n", x);
			printf("它们的最小公倍数为:%d\n", (m*n) / x);
	return 0;
}

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值