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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 奋斗_168 初级黑马   /  2015-4-12 13:35  /  3582 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

20黑马币
题目:输入两个正整数m和n,求其最大公约数和最小公倍...

最佳答案

查看完整内容

这是我的答案,采用的是辗除法还请采纳哦, package com.itheima; //1.程序分析:利用辗除法。 public class Test9 { //下面的方法是求出最大公约数 public static int gcd(int m, int n) { while (true) { //返回最小公约数 if ((m = m % n) == 0) return n; if ((n = n % m) == 0) return m; } } public static void main(String args[]) throws Exception { //取得输入值 //Scanner chin = new Scanner(System. ...

13 个回复

倒序浏览
这是我的答案,采用的是辗除法还请采纳哦,
package com.itheima;
//1.程序分析:利用辗除法。

public class Test9
{
//下面的方法是求出最大公约数
public static int gcd(int m, int n)
{
while (true)
{
//返回最小公约数
if ((m = m % n) == 0)
return n;
if ((n = n % m) == 0)
return m;
}
}
public static void main(String args[]) throws Exception
{
//取得输入值
//Scanner chin = new Scanner(System.in);
//int a = chin.nextInt(), b = chin.nextInt();
//例如求a=23,b=32的最小公倍数和最大公约数
int a=23; int b=32;
//由于main函数是静态的,所以这里的gca也必须是静态的。
int c = gcd(a, b);
System.out.println("最小公倍数:" + a * b / c + "\n最大公约数:" + c);
}
}
回复 使用道具 举报
  1. /*
  2. * 求最大公约数和最小公倍数
  3. *
  4. * 概念
  5. *
  6. * 最大公约数就是几个数公有的因数中最大的一个
  7. * 假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因数。
  8. * 最小公倍数就是几个数公有的倍数中最小的一个。
  9. * 整数m能够被整数n整除,整数m就是整数n的倍数。
  10. */

  11. public class Demo2 {

  12.         public static void main(String[] args) {

  13.                 int m = 9;
  14.                 int n = 4;
  15.                 System.out.println(最大公约数(m, n));// 调用maxCommonDivisor()方法
  16.                 System.out.println(最小公倍数(m, n));// 调用minCommonMultiple()方法
  17.         }

  18.         // 循环法求最大公约数
  19.         public static int 最大公约数(int m, int n) {
  20.                 // 保证m为较大数,n为较小数。若m<n,则进行数据交换
  21.                 if (m < n) {
  22.                         int temp = m;
  23.                         m = n;
  24.                         n = temp;
  25.                 }
  26.                 // 1.若m除以n余数为0,则最大公约数即为较小数n,返回n
  27.                 // 2.否则,通过交换,将较大数(1中较小数)除以较小数(1中余数),若余数为0,则最大公约数即为较小数,返回n
  28.                 // 3.否则,通过交换,将较大数(2中较小数)除以较小数(2中余数),。。。。
  29.                 // 4.直到找到较大数能除尽较小数的时候(顶点为整数1),最大公约数即为那时候的较小数。
  30.                 while (m % n != 0) {
  31.                         int temp = m % n;
  32.                         m = n;
  33.                         n = temp;
  34.                 }
  35.                 // 返回最大公约数
  36.                 return n;
  37.         }

  38.         // 求最小公倍数等于两个数中的任一数除以最大公约数,再乘上两个数中另外一个数。
  39.         public static int 最小公倍数(int m, int n) {
  40.                 return m * n / 最大公约数(m, n);
  41.         }
  42. }
复制代码
回复 使用道具 举报
先明确最大公约数和最小公倍数的规则:
m的因子中,和n的因子相同的数中最大的那个,是最大公约数。
m*n/最大公约数=最小公倍数。


class Demo
{
        public static void main(String [] args)
        {
                int m=135;
                int n=12;
                gong(m,n);
                }
        public static void gong(int m,int n)
        {
                if (m>n)
                {
                        int temp=m;
                        m=n;
                        n=temp;
                        }
                int yue=0;                               //定义变量接收最大公约数。
                for (int x=1;x<(m/2+1);x++)
                {
                        if (m%x==0)
                        {
                                if (n%x==0)
                                        yue=x;
                                }
                        }
                int bei=m*n/yue;                             //最小公倍数求法。
                System.out.println("最大公约数是:"+yue+",最小公倍数是:"+bei);
                }
        }

回复 使用道具 举报
本帖最后由 弃车保 于 2015-4-13 00:34 编辑
  1. import java.util.*;

  2. public class GreatCD     {
  3.         public static void main(String[] args) throws Exception {
  4.                 int     a ,b,gcd;
  5.                 Scanner s = new Scanner(System.in);
  6.                 System.out.print( "键入一个整数n:");
  7.                 a = s.nextInt();
  8.                 System.out.print( "再键入一个整数m: ");
  9.                 b = s.nextInt();
  10.                 s.close();
  11.                 gcd = gcd(a,b);
  12.                 int gd = a * b / gcd;
  13.             
  14.                 System.out.println("最大公约数: " + gcd);
  15.                 System.out.println("最小公倍数: " + gd);
  16.    
  17. }

  18. static public int gcd(int x, int y) {
  19.         int t;
  20.         if(x < y) {
  21.                 t = x;
  22.                 x = y;
  23.                 y = t;
  24.         }
  25.         while(y != 0) {
  26.                 if(x == y)
  27.                         return x;
  28.                 else {
  29.                         int k = x % y;
  30.                         x = y;
  31.                         y = k;
  32.                         }
  33.                 }
  34.         return x;
  35.         }
  36. }
复制代码

回复 使用道具 举报
看到黑马币,很兴奋!!!我要努力、努力!!!!
回复 使用道具 举报
让我先想一想
回复 使用道具 举报
/**下面的程序给出了一种算法。
    函数 myfunc 接受两个正整数a,b
    经过运算后打印出 它们的最大公约数和最小公倍数
* @(#)GongYueShu_GongBeiShu.java
*/


  1. public class GongYueShu_GongBeiShu {
  2.        
  3.         // 交换数值
  4.         public static void swap(int a,int b)
  5.         {
  6.            int temp;
  7.            temp=a;
  8.            a=b;
  9.            b=temp;
  10.         }
  11.        
  12.         public static void myfunc(int a, int b)
  13.         {
  14.            int m,n,r;  
  15.            if(a<b)
  16.                     swap(a,b);
  17.            m=a;
  18.            n=b;
  19.            r=a%b;
  20.            while(r!=0)
  21.            {
  22.             a=b;b=r;
  23.             r=a%b;
  24.            }
  25.            System.out.println("b:"+b);  // 最大公约数
  26.            System.out.println("最小公倍数:"+ (m*n/b));  // 最小公倍数
  27.         }
  28.        
  29.         public static void main (String args[]){
  30.                
  31.                 new GongYueShu_GongBeiShu().myfunc(15,20);
  32.         }
  33. }
复制代码
回复 使用道具 举报
来的晚了只能学(喝)习(点)下(汤)咯。。。
回复 使用道具 举报
import java.util.*; public    class     lianxi06     {  public static void main(String[] args) { int     a ,b,m; Scanner s = new Scanner(System.in); System.out.print( "键入一个整数: ");  a = s.nextInt(); System.out.print( "再键入一个整数: ");  b = s.nextInt();       m = deff(a,b);//这是什么意思???       int n = a * b / m;       System.out.println("最大公约数: " + m);       System.out.println("最小公倍数: " + n); }  //后面这一段可以不要嘛?是什么意识解释一下??? static 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; }  }
回复 使用道具 举报
噢噢噢噢哦
回复 使用道具 举报
最大公约数*最小公倍数=两个数的乘积,这样只求一个,第二个就有了,这样算不算偷懒?
回复 使用道具 举报
小手一抖,积分到手
回复 使用道具 举报
哈哈,都一个个是大神啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马