两数的最大公约数、最小公倍数
来源:互联网 发布:无法备案的域名 编辑:程序博客网 时间:2024/05/29 09:59
几个整数,公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。例如:12、16的公约数有±1、±2、±4,其中最大的一个是4,4是12与16的最大公约数,一般记为(12,16) = 4。12、15、18的最大公约数是3,记为(12,15,18) = 3。
几个自然数公有的倍数,叫做这几个数的公倍数,其中最小的一个自然数,叫做这几个数的最小公倍数。例如:4的倍数有±4、±8、±12、±16,……,6的倍数有±6、±12、±18、±24,……,4和6的公倍数有±12、±24,……,其中最小的是12,一般记为[4,6] = 12。12、15、18的最小公倍数是180。记为[12,15,18] = 180。若干个互质数的最小公倍数为它们的乘积的绝对值。*/
//由概念得:公约数中这几个数可正可负,最大公约数为正 公倍数中这几个数必须为正,结果为正
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>int MaxDiv(int div1, int div2){ //思路:辗转相除法(还有更相减损法), 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至3000年前。 //首先,两数必须同为正 assert(div1); assert(div2); int rem = div1%div2; while (rem = div1%div2) { div1 = div2; div2 = rem; } return div2;}int MinMul(int mul1, int mul2){ //思路:两数的乘积除以两数的最大公约数 assert(mul1); assert(mul2); return mul1*mul2 / MaxDiv(mul1, mul2);}void test(){ int a = 0, b = 0; scanf("%d", &a); scanf("%d", &b); printf("MaxDiv = %d\n", MaxDiv(a, b)); printf("MinMul = %d\n", MinMul(a, b));}int main(){ test(); system("pause"); return 0;}
0 0
- 两数的最大公约数、最小公倍数
- 两数的最大公约数和最小公倍数
- python之计算两数的最大公约数和最小公倍数
- 两个数的最大公约数,最小公倍数
- 两数的最大公约数
- 两种方法求两个数的最大公约数和最小公倍数--C语言
- java基础语法练习--求出两数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- 如何求两个数的最大公约数,最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- Java求两个数的最大公约数最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数及最小公倍数 。
- 两个数的最大公约数与最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- <笔试><面试>C/C++单链表相关(4)判断两链表是否相交,求交点(链表不带环/可能带环)
- <笔试><面试>C/C++单链表(最综合)最全工程从建立到相关函数实现
- C++,笔试面试,使用C++编程,实现万年历
- C/C++,笔试面试,多种方法求100以内的所有素数
- 数据库范式例子说明
- 两数的最大公约数、最小公倍数
- 两个数字交换(不使用临时变量)
- 编写程序将2000年以内的平年闰年分开并分别计算个数
- 使用C语言编写程序,求解有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个序列的前20项
- 有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数
- 求几个相同数字组成不同位数数字的和:s=a+aa+aaa+aaaa+aa…a的值
- 一小球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。
- ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
- 回文数与回文字符串的判断