求两个正整数的最大公约数和最小公倍数。

方法一:

import java.util.Scanner;
public class Test01 {
    int math (int a,int b) {//用转转相除法求最小公约数,在这里设一个方法
        if(a%b==0) {
            return b;
        }
        else {
            return math (b,a%b);
        }
    }
    public static void main(String []args) {
        int x=1;
        while(x>0) {//输入错误时继续输入
            
        System.out.println("请输入两个正整数:");
        Scanner in=new Scanner(System.in);
        int m=in.nextInt();
        int n=in.nextInt();
        
        if(m>0&&n>0) {
        int u=m*n;//用u来计算m*n
        Test01 t=new Test01();
        int g=t.math(m, n);//用g来表示最小公约数
        System.out.println("最小公约数为:"+g);
        System.out.println("最大公倍数为:"+u/g);
        break;
        }
        else {
            System.out.println("输入错误!请重新输入");
            
        }
        
        }
    }

}

方法二:

import java.util.Scanner;
public class test02 {
    public static void main(String [] args) {
        int x=1;
        while(x>0) {
        System.out.println("请输入两个正整数:|");
        Scanner in=new Scanner(System.in);
        int m=in.nextInt();
        int n=in.nextInt();
        int u= m*n; //  用u来保存m*n 的值
        
         if(m>=0&&n>=0) {//判断输入是否正确
         while(n>0) {
         if(m>=n&&m%n!=0){ 
             int t = n;
             n = m%n; // 利用了递归算法
             m = t; 
         }else if(m%n==0){
             break; // m是n的倍数 
         }else{ 
             int s = m; // 当  m < n 时 ,m n的值进行交换交换
             m = n;
             n = s; 
            }
         } 

         System.out.println("两个数的最大公约数为:"+n);
         System.out.println("两个数的最小公倍数为:"+u/n);
         break;
        }
        else {
            System.out.println("输入错误!请重新输入。");
            
        }
        }
    }

}
 

方法三:

import java.util.Scanner;

public class test03 {
    public static void main(String [] args) {
        int a=1;
        while(a>0) {
        
        System.out.println("请输入两个正整数:|");
        Scanner in=new Scanner(System.in);
        int x=in.nextInt();
        int y=in.nextInt();
        
        if(x>0&&y>0) {
        int u= x*y; //  用u来保存x*y 的值
        //辗转相减法计算最小公约数
        
        while (x!=y)
        {
            if (x>y)
                x = x-y;
            else
                y = y-x;
        }

        
         System.out.println("两个数的最大公约数为:"+x);
         System.out.println("两个数的最小公倍数为:"+u/x);
         break;
        }
        else {
            System.out.println("输入错误!请重新输入。");
            
        }
    }
}
}

求三个数的最大公约数与最小公倍数:

import java.util.Scanner;

public class test04 {
    public static void main(String [] args) {
    int o=1;
    while(o>0) {
    System.out.println("请输入三个正整数:|");
    Scanner in=new Scanner(System.in);
    int x=in.nextInt();
    int y=in.nextInt();
    int z=in.nextInt();
    
    if(x>0&&y>0&&z>0) {
    //先求x,y的最大公约数与最小公倍数
    int u= x*y; //  用u来保存x*y 的值
    //辗转相减法计算最小公约数
    
    while (x!=y)
    {
        if (x>y)
            x = x-y;
        else
            y = y-x;
    }
    int m=u/x;
    int n=m*z;
    int v=x;
    //再求x,y的最大公约数v与z的最大公约数,  x,y的最小公倍数m与z的最小公倍数
    while(v!=z)
    {
        if(v>z)
            v=v-z;
        else
            z=z-v;
      }

    
     System.out.println("三个数的最大公约数为:"+v);
     System.out.println("三个数的最小公倍数为:"+n/v);
     break;
    }
    else {
        System.out.println("输入错误,请重新输入。");
    }

    }
    }
    
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值