代码自测(输入任意两个整数,输出他们的最大公约数和最小公倍数 )-2021-7-16
输入任意两个整数,输出他们的最大公约数和最小公倍数
package com.qianfeng.day04;import java.util.Scanner;public class Work04 {public static void main(String[] args) {Scanner input = new Scanner(System.in);int a,b; //输入的两个数int as,bs; //备份两个数System.out.print("请您输入两个整数:");a = input.nextInt();b = input.nextInt();as = a;bs = b;//方法一:穷举法System.out.println("方法一: 穷举法");for(int i = (a>b?b:a); i >= 1; i--) {if(a % i == 0 && b % i == 0) {System.out.println("最大公因数为:" + i);break;}}for (int i = (a>b?a:b); i <= a*b; i++) {if(i % a == 0 && i % b == 0) {System.out.println("最小公倍数为:" + i + "\n");break;}}//方法二:相减法int sum; //两数之和sum = a * b;System.out.println("方法二:相减法");while (true) {if(a != b) {if (a > b) {a = a - b;} else {b = b - a;}} else {break;}}System.out.println("最大公因数为:" + a);System.out.println("最小公倍数为:" + sum/a + "\n");//方法三:辗转相除法System.out.println("方法三:辗转相除法");int remainder1,remainder2 = 1,remainder = 1; //用于储存余数int max,min; //储存两个数的最大和最小值int gcd,lcm; //分别代表最大公因数和最小公倍数max = as>bs?as:bs;min = as<bs?as:bs;remainder1 = max % min;if (remainder1 != 0) {remainder2 = min % remainder1;}if (remainder1 == 0) {gcd = min;} else if(remainder2 == 0) {gcd = remainder1;} else {while(remainder != 0) {remainder = remainder1 % remainder2;remainder1 = remainder2;remainder2 = remainder;}gcd = remainder1; }lcm = sum/gcd;System.out.println("最大公因数为:" + gcd);System.out.println("最小公倍数为:" + lcm + "\n");input.close();}
}
解释:
方法一:穷举法
最大公因数的取值范围一定在,1到两个数之间小的那一个范围内
最小公倍数的取值方位一顶在,两个数之间最大的哪一个到两数相乘范围内
然后直接通过i++的方式寻找,进行枚举
方法二:相减法
- 两数中最大的那个数减去最小的那个数,得到了一个值
- 然后让得到的这个值去替换两个数中大的那个
- 然后比较替换后的两个数,重复第一个步骤
- 当两个数相等的时候即为最大公因数
- 最后将刚开始的两个数相乘再除以最大公因数,之后得到的那个数就是最小公倍数
方法三:辗转相除法
- 判断两个数的最大值,让最大值除去最小值然后得到它的余数1
- 用两个数中的最小值除以余数1,得到余数2
- 让余数1除以余数2得到余数3
- 重复上述步骤,当哪一个余数为零,那么它的除数就是最大公因数
代码自测(输入任意两个整数,输出他们的最大公约数和最小公倍数 )-2021-7-16相关推荐
- C语言设计函数求最大公约数,C语言程序设计课程设计--编写函数求取两个整数m,n的最大公约数和最小公倍数.doc_在线文库www.lddoc.cn...
C语言程序设计课程设计--编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc C语言程序设计课程设计C语言程序设计课程设计评语考勤(10)纪律(10)过程(40)设计报告(30)答辩(10) ...
- python求解指定输入的两个整数的二进制表达不同位数之和
题目: 输入两个整数,求解他们的二进制表示中不同的位数有多少 思路: 先转化为二进制表示之后,以较短的表达式为主,计算对应位置上面的不同位数和,最后的结果再加上二者二进制表示长度的差值即可 下面是具体 ...
- 设计求任意两个整数和的web程序,用户通过提交页面(input.jsp)输入两个整数,并提交给一个(sum.jsp)程序
张继军 董卫 <java web 应用开发技术与实案列教程>课后习题之第三章第4题 题解 题目内容 源代码 input.jsp sum.jsp positive.jsp negetive. ...
- c语言,在主函数中输入一个整数,求该整数各位数字的乘积,[求助]求由键盘输入的任意两个整数的积...
[求助]求由键盘输入的任意两个整数的积 [问题已解决] 我是才接触C的新手,一共才上了4节课,老师就出题了,请高手帮忙看看(如果愿意帮忙改的,请尽量不要改变原来的变量):--------------- ...
- ACMNO.7 输入两个正整数m和n,求其最大公约数和最小公倍数。 输入 两个整数 输出 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35
题目描述 输入两个正整数m和n,求其最大公约数和最小公倍数. 输入 两个整数 输出 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35 来源/分类 C语言 示例照片: 设计思路: 本题最难的 ...
- Java黑皮书课后题第3章:3.2(游戏:将三个数相加)程序清单3-1中的程序产生2个整数并提示用户输入这两个整数的和。修改该程序使之能产生三个个位数整数,提示用户输入这三个整数的和
3.2(游戏:将三个数相加)程序清单3-1中的程序产生2个整数并提示用户输入这两个整数的和.修改该程序使之能产生3个个位数整数,提示用户输入这3个整数的和 题目 题目概述 程序清单3-1(非本题代码) ...
- 输入任意两个两位的自然数,输出它们完整的乘法竖式。
题目: 输入任意两个两位的自然数,输出它们完整的乘法竖式. 代码: 1 program shen17; 2 var 3 a,b,c,d:integer; 4 BEGIN 5 readln(a,b); ...
- c语言找最大数字,C语言: 键盘输入任意10个整数,找出最大数及最大数的序号。...
例1:键盘输入任意10个整数,找出最大数. 解析如下: 这个题目可以用我们前面介绍的打擂台的方法来做:先输入一个数作为擂主,然后,从第二个数开始,每输入一个数都跟擂主比较,如果大于擂主,则记住该数,使 ...
- 求任意两个整数的最大公因数
按照欧几里得算法,编写程序,求用户从键盘输入的任意两个整数的最大公因数. 程序的运行结果如下所示: 输入: 120 80 输出: 40 分析:根据欧几里得算法 gcd(a,b)=gcd(b,a%b)证 ...
最新文章
- 手机项目,html抬头,HTMLCSS学习笔记(二十)-- 移动端项目准备工作
- php多文件压缩的功能函数
- Hdu 4415 Assassin's Creed 【贪心】.cpp
- 使用 C# 编程对RTF文档的支持
- RocketMQ源码解析-PullConsumer取消息(2)
- 快速编辑里指定默认值
- springmvc获取原生servletAPI
- ext2文件系统源代码之ext2.h
- 删库跑路大全 删库跑路
- IOS开发之——音乐播放器-概述(01)
- HTML结构及常用的标签
- 网页实现excel下载
- tomcat轻量级服务器
- 论 Erda 的安全之道
- siri打电话功能测试用例编写
- shineblink电位器模拟旋钮
- 搜索引擎蜘蛛算法与蜘蛛程序构架
- node sass 报错解决方法 Module build failed (from ./node_modules/sass-loader/dist/cjs.js)
- 数学:SVM(2)点到直线距离
- 程序员必备的600个英语词汇(4)