要求用循环结构解决

qq_36262738 2016-09-28 12:04:01
6.从控制台输入两个数,求这两个数的最大公约数和最小公倍数
例:8和12的最小公倍数为24,最大公约数为4
...全文
743 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
要有留白 2016-10-11
  • 打赏
  • 举报
回复
我是来学习的! 一、最大公约数的算法: (2)辗转相除法 有两个整数a和b; ①a%b的余数c; ②若c=0,则b即为两数的最大公约数; ③若c≠0,则a=b,b=c,再去执行①; 例如:求12和8的最大公约数的过程为: 12%8=4;//余数4≠0,所以8不是最大公约数; 8%4=0;//余数为0,所以4就是最大公约数。 (3)相减法 有两个整数a和b; ①若a>b,则a=a-b; ②若a<b,则b=b=a; ③若a=b,则a(或b)就是两数的最大公约数; ④若a≠b,则再回去执行①; 例如:求12和8的最大公约数的过程为: 12≠8 两个数不相等则相减;12-8=4;8≠4 不相等则不是最大公约数,相减;8-4=4;4=4,两个数相等则为最大公约数。 (4)穷举法 有两个整数a和b; ①i=min(a,b)让i为两个数中较小的数; ②两个数同时能被i整除,i即为最大公约数; ③i-- 让i自减,执行②判断,直到找到能整除的i; 例如:求12和8的最大公约数的过程为: i=8;12%i≠0;i--; i=7;12%i≠0;8%i≠0;i--; ……; i=4;12%i=0;8%i=0; 因此i=4为最大公约数。 二、最小公倍数的算法 有两个整数a和b,它们的最大公约数为c,最大公倍数为d,则a*b=c*d,因此在知道最大公约数后,最小公倍数d=a*b/c。 例如:求12和8的最大公倍数的过程: 根据上述方法求出12和8的最大公约数为4,则它们的最小公倍数d=12*8/4=24。 不要问我为什么没有(1),因为我没有按顺序来,233333333333
pan__yy 2016-10-09
  • 打赏
  • 举报
回复
看一下这个博客,求最小公倍数和最大公约数,用位操作实现的,理解有点难,但是效率很高,代码量极少 http://blog.csdn.net/qq_22497299/article/details/52759795
肃穆丶 2016-09-29
  • 打赏
  • 举报
回复
百度一下,,,,全知道
lliiqiang 2016-09-29
  • 打赏
  • 举报
回复
从1开始搜索到最小值,碰到能够同时整除2个数的就赋值到最大公约数。然后从最大值开始判断不断加1,直到能够被2个数整除为止就是最小公倍数。
  • 打赏
  • 举报
回复
当作看不见 2016-09-28
  • 打赏
  • 举报
回复
网上一搜大把这样的题,楼主太懒
___d 2016-09-28
  • 打赏
  • 举报
回复
伸手党就算了。结贴率还是0
乐之者v 2016-09-28
  • 打赏
  • 举报
回复
伸手党。。无语。
当作看不见 2016-09-28
  • 打赏
  • 举报
回复

public class Gcd {  
      /**欧几里得在其《几何原本》中提出的欧几里得算法,有称辗转相除法,  
       * 具体做法是如果q和r分别是m除以n的商及玉树,m=nq+r,那么m和n的最大公约数等于n和  
       * r的最大公约数,下面是递归实现  
     * @param a  
     * @param b  
     * @return  
     */  
    public int gcd1(int a,int b){  
          return b==0?a:gcd1(b,a%b);  
      }  
    /**  
     * 不用递归实现  
     * @param a  
     * @param b  
     * @return  
     */  
    public int gcd2(int a,int b){  
        int temp=0;  
        while(b!=0){  
            temp=a%b;  
            a=b;  
            b=temp;  
        }  
        return a;  
    }  
      
    /**求最小公倍数  
     * 最小公倍数等于a*b/他们的最大公约数  
     * @param a  
     * @param b  
     * @return  
     */  
    public int lcm(int a,int b){  
        int gcd=gcd1(a,b);  
        return (a*b)/gcd;  
    }  
      public static void main(String[] args) {  
          Gcd gcd=new Gcd();  
          System.out.println("第一种方法求最大公约数"+gcd.gcd1(12, 6));  
          System.out.println("第二种方法求最大公约数"+gcd.gcd2(12, 9));  
          System.out.println("最小公倍数"+gcd.lcm(3, 7));  
    }  
}  

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧