输入两个正整数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,求其最大公约数和最小公倍数(常见的错误代码分析)相关推荐

  1. C语言学习之输入两个正整数m和n,求其最大公约数和最小公倍数。

    输入两个正整数m和n,求其最大公约数和最小公倍数. #include <stdio.h> void main(){int m,n,temp,p,r;printf("请输入两个正整 ...

  2. python输入两个正整数m和n用for循环求其最大公约数_输入两个正整数,m和n,求其最大公约数和最小公倍数。...

    1. 输入两个正整数, m 和 n ,求其最大公约数和最小公倍数. 2. 输入一行字符,分别统计出其中字母.空格.数字和其他字符的个数. 3. 输入一个正整数求出它是几位数:输出原数和位数. 4. 输 ...

  3. C语言_算法_输入两个正整数m和n,求其最大公约数与最小公倍数

    (1)方式一:碾转相除法 #include <stdio.h> #include <math.h> /*输入两个数,求最大公约数 与最小公倍数分析关系:最小公倍数=两数的积/最 ...

  4. 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 ...

  5. C语言输人两个正整数m和n,求其最大公约数和最小公倍数

    #include <stdio.h> int main() {int p, r, n, m, temp;printf("请输入两个正整数n,m:");scanf(&qu ...

  6. c语言输入两个正整数m和n求其最小公倍数,用C语言编写:输入两个正整数m和n,求其最大公约数和最小公倍数....

    用C语言编写:输入两个正整数m和n,求其最大公约数和最小公倍数. 來源:互聯網  2010-05-25 15:19:26  評論 分類: 電腦/網絡 >> 程序設計 >> 其他 ...

  7. 输入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; ...

  8. Console-算法[if,while]-一输入两个正整数m和n,求其最大公约数和最小公倍数

    ylbtech-Arithmetic:Console-算法[if,while]-一输入两个正整数m和n,求其最大公约数和最小公倍数 1.A,Demo(案例) 输入两个正整数m和n,求其最大公约数和最小 ...

  9. c语言:输入两个正整数m和n,求其最大公约数和最小公倍数

    输入两个正整数m和n,求其最大公约数和最小公倍数. 解:程序: #include <stdio.h> int main() { int num1, num2, t,p; printf(&q ...

  10. ACMNO.7 输入两个正整数m和n,求其最大公约数和最小公倍数。 输入 两个整数 输出 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35

    题目描述 输入两个正整数m和n,求其最大公约数和最小公倍数. 输入 两个整数 输出 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35 来源/分类 C语言 示例照片: 设计思路: 本题最难的 ...

最新文章

  1. 败了一块7600GS AGP显卡
  2. 什么是“自然语言处理”? 它到底在“处理”些什么?
  3. mysql联表查询多记录显示_数据库:MySQL(多表的表记录的查询)(三)
  4. 向maven中央仓库提交jar
  5. CSDN总结的面试中的十大算法
  6. 剪切粘贴时总是上次的内容_Quicker 1.4版本更新内容
  7. Product Long text - children usage
  8. find out the service list changed with given user which have item category group
  9. Outlook 阅读窗格(Reading Pane)
  10. 移除input框type=number在部分浏览器的默认上下按钮
  11. android源码已关联设备,获取android设备已安装应用信息
  12. Android图形系统之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的联系
  13. oracle数据库面试题及答案
  14. 【线性分类器】(二)“深度学习”的鼻祖——感知器
  15. 【Scrum】借由数个冲刺,实现产品的敏捷开发!
  16. 站在Stay老司机肩膀上分析Retrofit
  17. 苹果计算机远程桌面连接,Mac电脑怎么远程桌面连接?
  18. 图论3之图的最短路径算法
  19. AdamW优化器简单理解
  20. 个人常用iOS第三方库以及XCode插件介绍

热门文章

  1. 记录使用mybatis-plus时遇到的错误
  2. Windows图片和传真查看器打开图片慢
  3. 一个很懂业务的资深技术Leader的技术管理成长之路
  4. mysql data::dumper_初始化mysql数据库提示缺少Data:dumper模块解决方法
  5. 3种免费的网页截图API,可以在线截图,自动生成缩略图
  6. Wireshark 用户使用手册 ———— 自定义 Wireshark
  7. Elasticsearch-Kibana 8.3.2 集群安装搭建-Linux
  8. 20201009 Latex参考文献自动排序 \begin{thebibliography}
  9. Mysql之auto_increment(自动增长)
  10. ORB-SLAM2学习笔记——BundleAdjustment函数