乐趣区

关于java:三种方法求最大公约数和最小公倍数

/* 最大公约数:如果有一个自然数 a 能被自然数 b 整除,则称 a 为 b 的倍数,b 为 a 的约数。几个自然数私有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。最小公倍数:
 两数相乘再除以最大公约数,即为最小公倍数
 */package ch00;
import org.w3c.dom.ls.LSOutput;
import java.util.Scanner;
public class FindMaximumNumberOfConventions {
    // 从高向低遍历,寻求最大非法项
 public static int Solution1(int n,int m){for(int i=m; i>0; i--)
            if(n%i==0 && m%i==0){return i;}
        return 0;
 }
    // 碾转相除法
 public static int Solution2(int n,int m){
        int i;
 while(m>0){
            i = n%m;
 n = m;
 m = i;
 }
        return n;
 }
    // 更相减损法
 public static int Solution3(int n,int m){while(n!=m){if(n>m)
                n-=m;
 else m-=n;
 }
        return n;
 }
    public static void main(String[] args) {Scanner sc=new Scanner(System.in);
 System.out.println("请输出数 n:");
 int n=sc.nextInt();
 System.out.println("请输出数 m:");
 int m=sc.nextInt();
 int temp;
 if(n<m){
            temp=n;
 n=m;
 m=temp;
 }
        System.out.println("最大公约数:");
 System.out.println("Solution1:"+Solution1(n,m));
 System.out.println("Solution2:"+Solution2(n,m));
 System.out.println("Solution3:"+Solution3(n,m));
 System.out.println("最小公倍数:"+n*m/Solution1(n,m));
 }
}
退出移动版