三种方法求最大公约数和最小公倍数
最大公约数
最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。
最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。
java代码中实现了这三种算法
方法一:辗转相除
public static int gcd(int num1, int num2) {while (true) {if ((num1 = num1 % num2) == 0)return num2;if ((num2 = num2 % num1) == 0)return num1;}}
方法二:枚举法
public static int gcd(int num1, int num2) {int s = 1;int ifor (i = 2; i <= num1 && i <= num2; i++) {if (num1 % i == 0 && num2 % i == 0) {s = i;}}return s;}
方法三:相减法
public static int gcd(int num1, int num2) {while (num1 != num2)//a不等bif (num1 > num2) {num1 = num1 - num2;} else {num2 = num2 - num1;}return num1;}
最小公倍数
两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。整数a,b的最小公倍数记为[a,b],同样的,a,b,c的最小公倍数记为[a,b,c],多个整数的最小公倍数也有同样的记号。
public static int lcm(int num1, int num2, int gcd) {return num1 * num2 / gcd;}
下面是主函数,我是解决三个数的最大公约数,所以先求出前两个数的最大公约数,在把结果和第三个数再求
public static void main(String[] args) {System.out.println("输入三个数:");Scanner scanner = new Scanner(System.in);int num1 = scanner.nextInt();int num2 = scanner.nextInt();int num3 = scanner.nextInt();int gcd = gcd(num1, num2);int gcd1 = gcd(num3, gcd);if (gcd1 == 1) {System.out.println("没有最大公约数");} else {System.out.println("最大公约数是" + gcd1);}int lcm = lcm(num1, num2, gcd);int gcd2 = gcd(lcm, num3);System.out.println("最小公倍数是" + lcm(lcm, num3, gcd2));}
三种方法求最大公约数和最小公倍数相关推荐
- C++算法:三种方法求最大公约数和最小公倍数
三种方法求最大公约数和最小公倍数标题 首先明确最大公约数和最小公倍数的关系,设两个数为a,b:最大公约数为c,最大公倍数为d: 则ab=cd;怎么得到的可以通过数学算式证明. 分别用暴力搜索法,辗转相 ...
- Python:三种方法计算最大公约数和最小公倍数(欧几里德法、穷举法、stein算法)
Python:三种方法计算最大公约数和最小公倍数 1.穷举法 2.欧几里德法 3.Stein算法 题目:求取任意两个非负数(至多一个数为0)的最大公约数和最小公倍数: 参考资料:Python解决求最大 ...
- 三种方法求最大公约数及求n个数的最小公倍数
一.三种方法求两个数的最大公约数 (1) 辗转相除法 辗转相除法求最大公约数是一种常用的求两个数的最大公约数的方法. 方法是: 以小数除大数,如果能整除,那么小数就是所求的最大公约数.否则就用余数来除 ...
- 三种方法求最大公约数(C语言版)
问题描述:用三种方法求两个的整数的最大公约数. 算法分析: 1.相减法:输入两整数a和b,(1)如果a>b,a=a-b;(2)如果a<b,b=b-a;(3)如果a=b,a或b就为这两个整数 ...
- 三种方法求最大公约数-第六个程序20200613
闲话不多说,直接写代码. 方法1 #include<stdio.h> #include<stdlib.h>//计算最大公约数 方法1 int commondivisor(int ...
- 两种方法求最大公约数和最小公倍数
#include<iostream> using namespace std;// 最小公倍数 = 两数相乘/最大公约数 /* //辗转相除法 int gcd(int a, int b){ ...
- c语言 最大公约数 最小公倍数的编程,C语言三种算法求解最大公约数与最小公倍数...
C语言三种算法求解最大公约数与最小公倍数 最大公约数与最小公倍数的求解是很多初学C的人所面临的一道问题.当然这道问题并不难解答,也有很多人已经写过相关的博客,我在此书写此篇博客,一是为了让自己能够夯实 ...
- C语言四种方法求最大公约数
一.实验要求 运行最大公约数的常用算法,并进行程序的调试与测试,要求程序设计风格良好,并添加异常处理模块. 二.实验方法(四种) 1.辗转相除法(欧几里德法) C语言中用于计算两个正整数a,b的最大公 ...
- 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )
整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn)) ②求[1,n]之间每个数的质因数 ...
最新文章
- MMD_3b_StreamAlgorithms
- Android应用安全开发之浅谈加密算法的坑
- Centos下安装Mysql
- 开始阅读 深入理解计算机系统
- 最全.Net学习资料库上线,今日可免费下载各类资源!(附百度云链接)
- 桌面云计算: 提供灵活、可靠双保险
- python人力成本数据测算_人工成本数据统计
- 作业07-Java GUI编程
- 台式电脑主板插线步骤图_机箱上的跳线接在主板那些位置?台式电脑主板接线示意图解教程...
- 文通Windows CE平台车牌识别
- C#实现等差与等比数列求和
- Chrome 开发者工具官方中文文档
- Kafka偏移量(Offset)管理
- 身份证你需要了解的知识点
- 微信公众号获取用户头像
- 划重点!关于缓冲区溢出攻击,这份防范策略一定要收好!
- c#程序设计 习题7.3
- 书山有路勤为径,学海无涯苦作舟
- 如何打造一家高绩效组织?
- 64位系统上使用PLSQL Developer的解决方案