A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2. 【程序6】
  3. 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
  4. 程序分析:利用辗除法。
  5. */
  6. // 方法一:  对m和n同时除一个数,如果能同时整除,则取这个数的最大值即为最大公约数。


  7. import java.util.Scanner;
  8. class GongYueAndGongBei
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 getGongYueAndGongBei();
  13.         }
  14.         public static void getGongYueAndGongBei()
  15.         {
  16.                 Scanner sc = new Scanner(System.in);
  17.                 System.out.println("请输入正整数m:");
  18.                 int m=sc.nextInt();
  19.                 System.out.println("请输入正整数n:");
  20.                 int n=sc.nextInt();
  21.                 if(m<=0||n<=0)
  22.                 {
  23.                         System.out.println("数据输入有误,请重新输入!");
  24.                         getGongYueAndGongBei();
  25.                 }
  26.                 else
  27.                 {
  28.                         int max=m>=n?m:n;
  29.                         int min=m>n?n:m;
  30.                         int maxGongYue=1;
  31.                         for(int i=1;i<=min;i++)
  32.                         {
  33.                                 if(m%i==0&&n%i==0)
  34.                                 {
  35.                                         maxGongYue=i;
  36.                                 }
  37.                         }
  38.                         int minGongBei=m*n/maxGongYue;
  39.                         System.out.println(m+"和"+n+"的最大公约数为:"+maxGongYue);
  40.                         System.out.println(m+"和"+n+"的最小公倍数为:"+minGongBei);
  41.                 }
  42.         }
  43. }



  44. //方法二:  利用辗除法。

  45. /*
  46. import java.util.*;
  47. class GongYueAndGongBei
  48. {
  49.         public static void main(String[] args)
  50.         {
  51.                 int a,b,m;
  52.                 Scanner s=new Scanner(System.in);
  53.                 System.out.println("请键入一个正整数:");
  54.                 a=s.nextInt();
  55.                 System.out.println("请再键入一个正整数:");
  56.                 b=s.nextInt();
  57.                 deff cd=new deff();
  58.                 m=cd.deff(a,b);
  59.                 int n=a*b/m;
  60.                 System.out.println("最大公约数为:"+m);
  61.                 System.out.println("最小公倍数为:"+n);
  62.         }
  63. }
  64. class deff
  65. {
  66.         public int deff(int x,int y)
  67.         {
  68.                 while(y!=0)
  69.                 {
  70.                         if(x==y)
  71.                                 return x;
  72.                         else
  73.                         {
  74.                                 int k=x%y;
  75.                                 x=y;
  76.                                 y=k;
  77.                         }
  78.                 }
  79.                 return x;
  80.         }
  81. }
  82.        
  83. */

复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马