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

© 田建 高级黑马   /  2012-6-24 10:54  /  2350 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 田建 于 2012-6-24 14:58 编辑

今天写了下欧几里得算法,求两个数的最大公约数,代码写得出来,但是不是十分明白为什么这样求出来的是它们的最大公约数:
  1. import java.util.*;
  2. class Example0408
  3. {
  4. public static void main(String[] args)
  5. {
  6. Random random=new Random();
  7. float x=random.nextFloat();
  8. int m=Math.round(999*x+2);
  9. float y=random.nextFloat();
  10. int n=Math.round(999*y+2);
  11. System.out.println("m="+m+"\t\tn"+n);
  12. while(m>0)
  13. {
  14. if(m<n)
  15. {
  16. int temp=m;
  17. m=n;
  18. n=temp;
  19. System.out.println("m="+m+"\t\tn="+n);
  20. }
  21. m-=n;
  22. }
  23. System.out.println("Theg.c.d of m and n is"+n);
  24. }

  25. }
复制代码

3 个回复

倒序浏览
黑马_张佳超 发表于 2012-6-24 13:45
两个数的最大公约数,就是能整除这两个数的最大数。
例如:
28和8的最大公约数,大家都知道是4。用其中较大 ...

恩恩   想明白了,多谢点拨!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马