求最大公因数和最小公倍数

题目:求解三个整数的最大公因数和最小公倍数

1.最大公因数的求解

        最大公因数的定义:设A与B是不为零的整数,若C是A与B的因数,则C叫A与B的公因数,若干个公因数中最大的就是最大公因数。

       方法:1.根据定义求。A和B,假设B较小,用B-1,B-2.。。2等树依次去除A和B,能同时整除A与B的就是最大公因数

                   2.辗转相除法。

                        A/B: 商S1,余R1

                       B/R1:商S2,余R2

                      。。。

                       Rn/Rn+1:商Sn,余0//此时,Rn+1是A和B的最大公因数

2.最小公倍数

      1.定义求解。找出最大数D,用D的1倍、2倍。。去除以各个数,能够整除所有的数时,就是这些数的最小公倍数

      2.公式:A和B的最小公倍数=A*B/A和B的最大公因数

import java.io.*;
public class my {
    public static void main(String args[])
    {
       int num1,num2,num3;
       String s=" ";
       System.out.println("Input the first Number: ");
       try{
    	   BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
    	   s=in.readLine();
       }
       catch(IOException e){}
       num1=Integer.parseInt(s);
       System.out.println("Input the second Number: ");
       try{
    	   BufferedReader in= new BufferedReader(new InputStreamReader(System.in));
    	   s=in.readLine();
       }
       catch(IOException e){}
       num2=Integer.parseInt(s);
       System.out.println("Input the third Number: ");
       try{
    	  BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
    	  s=in.readLine();
       }
       catch(IOException e ){}
       num3=Integer.parseInt(s);
       //计算最大公因数
       int result1=0;
       int a=num1;
       int b=num2;
       int c=num3;
       int tmp=0;
       int remain=a%b;
       while(remain!=0)
       {
    	   a=b;
    	   b=remain;
    	   remain=a%b;
       }
       tmp=b;
       a=tmp;
       remain=a%c;
       while(remain!=0){
    	   a=c;
    	   c=remain;
    	   remain=a%c;
       }
      result1=c;
      System.out.println("最大公因数: "+result1);
     //计算最小公倍数
      int tmp1=num1*num2/tmp;
      a=tmp1;
      c=num3;
      remain=a%c;
      int result2=0;
      while(remain!=0){
    	a=c;
    	c=remain;
    	remain=a%c;
      }
      result2=tmp1*num3/c;
      System.out.println("最小公倍数: "+result2);
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大胖5566

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值