输入两个正整数m和n,求其最大公约数和最小公倍数(常见的错误代码分析)
输入两个正整数m和n,求其最大公约数和最小公倍数
错误的代码
public static void main(String[] args) {// 输入2个正整数,求最大公约数和最小公倍数// 最大公约数, 1> 第一步控制台输入Scanner sc = new Scanner(System.in);System.out.println("请输入第一个正整数:");int n = sc.nextInt();System.out.println("请输入第二个正整数:");int m = sc.nextInt();// 2> 最大公约数小于等于最小的那个,取m和n中小的那个数if(n > 0 && m >0) {int min = (n < m) ? n : m;for (int i = min; i >= 1; i--) {if (n % i == 0 && m % i == 0) {System.out.println("最大公约数为:" + i);break;}}// 求最小公倍数,最小公倍数一定大于等于最大的那个数,所以最m和n中最大的那个int max = (n > m) ? n : m;// 最小公倍数肯定为max的倍数,最大为n和m的乘积// 所以定义i为max的倍数,i一定小于等于n和m中小的那个,那么肯定也小于大的那个for (int i = 2; i < max; i++) {if (max % m == 0 && max % n == 0) {System.out.println("最小公倍数为:" + max);break;} else {max *= i;}}} else {System.out.println("输入数据不合法,请输入正整数!");}
}
正确代码
public static void main(String[] args) {System.out.println("请输入第一个正整数:");Scanner in = new Scanner(System.in);int m = in.nextInt();System.out.println("请输入第二个正整数:");int n = in.nextInt();if (m > 0 && n > 0) {//最大公约数肯定比二个正整数中最小的一个数int min = m < n ? m : n;for (int i = min; i >= 1; i--) {if (m % i == 0 && n % i == 0) {System.out.println("最大公约数为:" + i);//最小公倍数int b=m*n/i;System.out.println("最小公倍数为:" + b);break;}}} else {System.out.println("你输入的数字不合法!");}}
public static void main(String[] args) {class deff {public int deff(int x, int y) {int t;if (x < y) {t = x;x = y;y = t;}while (y != 0) {if (x == y) {return x;} else {int k = x % y;x = y;y = k;}}return x;}}//if判断主要是找到最大值和最小值,因此我们可以用三目运算//找出最大值和最小值,可以将以上代码,替换成下面注释的/* class deff {public int deff(int x, int y) {int min=x<y?x:y;int max=x>y?x:y;while (min!= 0) {if (max == min) {return max;} else {int k = max % min;max = min;min = k;}}return max;}}*/int a, b, m;Scanner s = new Scanner(System.in);System.out.println("输入一个整数: ");a = s.nextInt();System.out.println("再输入一个整数: ");b = s.nextInt();deff cd = new deff();//最大公约数m = cd.deff(a, b);//最小公倍数int n=a*b/m;System.out.println("最大公约数:"+m);System.out.println("最小公倍数;"+n);}
原因分析:最小公倍数是最大数的倍数,如果一味的只用最大数的倍数,会导致,所求最小公倍数,有可能是手算的,二倍或者几倍,因此不是最小公倍数。
数甲和数乙,且它们的最大公约数是A。则有数甲=aA,数乙=bA。可以相见,a和b一定是互质的。数甲×数乙=aA×bA=abA²。abA²÷A=abA,abA是数甲和数乙的最小公倍数。
测试案例
30和45 最大公约数15 最小公倍数90
错误代码结果展示:
正确代码结果展示:
28和45 最大公约数1 最小公倍数1260
错误代码结果展示:
正确代码结果展示:
48和36 最大公约数12 最小公倍数144
错误代码结果展示:
正确代码结果展示:
26和65 最大公约数13 最小公倍数130
错误代码结果展示:
正确代码结果展示:
输入两个正整数m和n,求其最大公约数和最小公倍数(常见的错误代码分析)相关推荐
- C语言学习之输入两个正整数m和n,求其最大公约数和最小公倍数。
输入两个正整数m和n,求其最大公约数和最小公倍数. #include <stdio.h> void main(){int m,n,temp,p,r;printf("请输入两个正整 ...
- python输入两个正整数m和n用for循环求其最大公约数_输入两个正整数,m和n,求其最大公约数和最小公倍数。...
1. 输入两个正整数, m 和 n ,求其最大公约数和最小公倍数. 2. 输入一行字符,分别统计出其中字母.空格.数字和其他字符的个数. 3. 输入一个正整数求出它是几位数:输出原数和位数. 4. 输 ...
- C语言_算法_输入两个正整数m和n,求其最大公约数与最小公倍数
(1)方式一:碾转相除法 #include <stdio.h> #include <math.h> /*输入两个数,求最大公约数 与最小公倍数分析关系:最小公倍数=两数的积/最 ...
- c语言gcb最小公倍数,C编序编程题目:输入两个正整数m和n,求其最大公约数和最小公倍...,C语言编程,输入两个正整数M和N(MN),计算M和N...
问题标题 C编序编程题目:输入两个正整数m和n,求其最大公约数和最小公倍...,C语言编程,输入两个正整数M和N(M 2019-3-27来自ip:15.121.164.188的网友咨询 浏览量:228 ...
- C语言输人两个正整数m和n,求其最大公约数和最小公倍数
#include <stdio.h> int main() {int p, r, n, m, temp;printf("请输入两个正整数n,m:");scanf(&qu ...
- c语言输入两个正整数m和n求其最小公倍数,用C语言编写:输入两个正整数m和n,求其最大公约数和最小公倍数....
用C语言编写:输入两个正整数m和n,求其最大公约数和最小公倍数. 來源:互聯網 2010-05-25 15:19:26 評論 分類: 電腦/網絡 >> 程序設計 >> 其他 ...
- 输入3个正整数,输出3个数的最大公约数和最小公倍数。
#include<stdio.h> //碾转相除法,求两个数的最大公约数 int gcd(int x,int y){int r;while(r=x%y!=0){r=x%y;x=y;y=r; ...
- Console-算法[if,while]-一输入两个正整数m和n,求其最大公约数和最小公倍数
ylbtech-Arithmetic:Console-算法[if,while]-一输入两个正整数m和n,求其最大公约数和最小公倍数 1.A,Demo(案例) 输入两个正整数m和n,求其最大公约数和最小 ...
- c语言:输入两个正整数m和n,求其最大公约数和最小公倍数
输入两个正整数m和n,求其最大公约数和最小公倍数. 解:程序: #include <stdio.h> int main() { int num1, num2, t,p; printf(&q ...
- ACMNO.7 输入两个正整数m和n,求其最大公约数和最小公倍数。 输入 两个整数 输出 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35
题目描述 输入两个正整数m和n,求其最大公约数和最小公倍数. 输入 两个整数 输出 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35 来源/分类 C语言 示例照片: 设计思路: 本题最难的 ...
最新文章
- 败了一块7600GS AGP显卡
- 什么是“自然语言处理”? 它到底在“处理”些什么?
- mysql联表查询多记录显示_数据库:MySQL(多表的表记录的查询)(三)
- 向maven中央仓库提交jar
- CSDN总结的面试中的十大算法
- 剪切粘贴时总是上次的内容_Quicker 1.4版本更新内容
- Product Long text - children usage
- find out the service list changed with given user which have item category group
- Outlook 阅读窗格(Reading Pane)
- 移除input框type=number在部分浏览器的默认上下按钮
- android源码已关联设备,获取android设备已安装应用信息
- Android图形系统之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的联系
- oracle数据库面试题及答案
- 【线性分类器】(二)“深度学习”的鼻祖——感知器
- 【Scrum】借由数个冲刺,实现产品的敏捷开发!
- 站在Stay老司机肩膀上分析Retrofit
- 苹果计算机远程桌面连接,Mac电脑怎么远程桌面连接?
- 图论3之图的最短路径算法
- AdamW优化器简单理解
- 个人常用iOS第三方库以及XCode插件介绍
热门文章
- 记录使用mybatis-plus时遇到的错误
- Windows图片和传真查看器打开图片慢
- 一个很懂业务的资深技术Leader的技术管理成长之路
- mysql data::dumper_初始化mysql数据库提示缺少Data:dumper模块解决方法
- 3种免费的网页截图API,可以在线截图,自动生成缩略图
- Wireshark 用户使用手册 ———— 自定义 Wireshark
- Elasticsearch-Kibana 8.3.2 集群安装搭建-Linux
- 20201009 Latex参考文献自动排序 \begin{thebibliography}
- Mysql之auto_increment(自动增长)
- ORB-SLAM2学习笔记——BundleAdjustment函数