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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

输入两个正整数m和n,求其最大公约数和最小公倍数。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 2528870651 于 2014-4-3 14:40 编辑
  1. <div class="blockcode"><blockquote>最大公约数:
  2. public class CommonDivisor{
  3.     public static void main(String args[])
  4.     {
  5.         commonDivisor(24,32);
  6.     }
  7.     static int commonDivisor(int M, int N)
  8.     {
  9.         if(N<0||M<0)
  10.         {
  11.             System.out.println("ERROR!");
  12.             return -1;
  13.         }
  14.         if(N==0)
  15.         {
  16.             System.out.println("the biggest common divisor is :"+M);
  17.             return M;
  18.         }
  19.         return commonDivisor(N,M%N);
  20.     }
  21. }
  22. 最小公倍数和最大公约数:
  23. public class CandC
  24.         {
  25.                 //下面的方法是求出最大公约数
  26.                 public static int gcd(int m, int n)
  27.                 {
  28.                         while (true)
  29.                         {
  30.                                 if ((m = m % n) == 0)
  31.                                 return n;
  32.                                 if ((n = n % m) == 0)
  33.                                 return m;
  34.                         }
  35.         }
  36.         public static void main(String args[]) throws Exception
  37.         {
  38.                 int a=3; int b=2;
  39.                 int c = gcd(a, b);
  40.                 System.out.println("最小公倍数:" + a * b / c + "\n最大公约数:" + c);
  41.         }
  42. }
复制代码



可以吗???

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
求两个非负正数m和n(要求m>n)的最大公约数可以使用辗转相除法。其算法描述为:
1)m除以n得到的余数为r(0<=r<n);
2)若r=0则算法结束,n为最大公约数。否则转3);
3)m=n,n=r,转1);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马