DANCE WITH JAVA

开发出高质量的系统

常用链接

统计

积分与排名

好友之家

最新评论

最大公约数

今天一次无意的思考中想起了最大公约数,想一下最大公约数的算法,第一反映是穷举,然后是短除,再

之后就想不到别的了,但是在模糊记忆中还应改有个别的,于是翻来覆去的想,忽然好像有个脚欧几里得

算法的东西,但具体内容全部和饭一起吃了,哎!google一下,发现果然是这个。实现方式
 穷举
 public static int getNumOne(int m,int n){
  int num=Math.abs(m-n);
  if (num > m){
   num=m;
  }
  if(num >n){
   num=n;
  }
  for(int i=num;i>0;i--){
   if(m%i==0 && n%i==0){
    num=i;
    break;
   }
  }
  return num;
 }
 欧几里得
 public static int getNumTwo(int m,int n){
  int num=1;
  if(m>n){
   num=getNumTwo(m-n,n);
  }else if(m<n){
   num=getNumTwo(n-m,m);
  }else if(m==n){
   num=n;
  }
  return num;
 }
 改进算法
 public static int getNumThree(int m,int n){
  int num=1;
  while(num>0){
   num=m%n;
   m=n;
   n=num;
  }
  return m;
 }

posted on 2006-09-22 00:12 dreamstone 阅读(1514) 评论(2)  编辑  收藏 所属分类: 基础

评论

# re: 最大公约数 2006-11-20 12:34 孤枕

帅哥,输入15与-5返回的是-5也,我感觉应该是5吧,不是我理解错了最大公约书数的概念吧  回复  更多评论   

# re: 最大公约数 2006-11-20 13:56 dreamstone

呵呵,我的程序有问题,应该是实现了正整数的最大公约数。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: