C语言程序设计100道真题-两正整数的最大公约数和最小公倍数

题目

输入两个正整数m和n,求其最大公约数和最小公倍数。

实现的思路

  1. 接收用户输入的两个正整数m和n。
  2. 使用一个循环从m和n的乘积开始向下查找,找到能同时整除m和n的最大数,这个数就是最大公约数。
  3. 根据最大公约数计算最小公倍数,最小公倍数 = m * n / 最大公约数。
  4. 打印最大公约数和最小公倍数。

代码(包含解析)

#include <stdio.h>   
  
int main(){  
	int x, y, i, g;  
	  
	// 提示用户输入两个正整数  
	printf("请输入两个正整数(中间空格隔开):\n");  
	// 读取用户输入的两个正整数  
	scanf("%d %d", &x, &y);  
	  
	// 从x和y的乘积开始向下查找最大公约数  
	for(i = x * y; i >= 2; i--) {  
		// 如果i能同时整除x和y,则i是最大公约数  
		if(x % i == 0 && y % i == 0) {  
			break;  
		}  
	}  
	  
	// 根据最大公约数计算最小公倍数  
	g = x * y / i;  
	  
	// 打印最大公约数和最小公倍数  
	printf("最小公约数是:%d 最大公倍数是:%d",i,g);
	  
	return 0;  
}

代码解读

  • x 和 y 用于存储用户输入的两个正整数。
  • i 用于在循环中查找最大公约数。
  • g 用于存储计算出的最小公倍数。
  • scanf 函数用于读取用户输入的两个正整数。
  • for 循环从 x * y 开始递减,检查每个数是否能同时整除 x 和 y
  • 当找到能同时整除 x 和 y 的数时,循环终止,这个数就是最大公约数。
  • 最小公倍数通过 x * y / 最大公约数 计算得出。
  • 最后,使用 printf 函数打印出最大公约数和最小公倍数。
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值