输入输出A和B的最小公倍数

编程考试中遇到一道关于求最小公倍数的题目,要求输入两个正整数A和B并输出它们的最小公倍数。解题思路包括:如果任一数为1,则另一个数即为最小公倍数;否则,通过大数除以小数的余数判断是否存在整数倍关系,找到较大数即为最小公倍数。

前几天和大雪一起落下的是我的编程考试成绩,一道按理来说应该满分通过的程序题绊住了我的思绪。
下面是题目要求
输入描述: 输入两个正整数A和B。
输出描述: 输出A和B的最小公倍数。
这道题目从原理上分析,要求两个正整数的最小公倍数。首先如果这两个数其中一个是1,那么另一个数就是这两个数的最小公倍数。其次,若两个数都不为1,则将两个数先比较大小,将较大的数对较小的数求余数,看较大的数是否为较小数的整数倍。若是整数倍,则较大的数为最小公倍数。
下面是听完老师讲解后自己做的源码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
   
   
	int A
在C语言C++中,有多种方式可以实现输入两个自然输出它们的最小公倍数。 #### C语言实现方式一:根据定义直接计算 ```c #include <stdio.h> int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); // m接收两个中较大的那个 int m = (a > b ? a : b); while (1) { if (m % a == 0 && m % b == 0) { break; } m++; } printf("%d\n", m); return 0; } ``` 此方法依据最小公倍数的定义,从两个中的较大开始递增,直至找到能同时被这两个整除的,该即为最小公倍数[^2]。 #### C语言实现方式二:通过最大公约计算 ```c #include <stdio.h> // 求最大公约 int GreatestCommonDivisor(int a, int b) { int t; if (a < b) { // 交换两个,使大放在a的位置上 t = a; a = b; b = t; } while (b != 0) { // 利用辗转相除法,直到b为0为止 t = a % b; a = b; b = t; } return a; } // 求最小公倍数 int LeastCommonMultiple(int a, int b) { int t = a * b / GreatestCommonDivisor(a, b); return t; } int main() { int a, b; scanf("%d %d", &a, &b); printf("%d\n", LeastCommonMultiple(a, b)); return 0; } ``` 该方法先使用辗转相除法求出两个的最大公约,再根据最小公倍数等于之积除以最大公约来计算最小公倍数[^3]。 #### C++实现方式:利用库函 ```cpp #include<bits/stdc++.h> using namespace std; int main(){ long long n, m; cin >> n >> m; cout << n * m / (__gcd(n, m)); return 0; } ``` 这种方式借助C++标准库中的`__gcd`函求出最大公约,进而计算最小公倍数[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值