자바 두 수의 최대 공약수 구하 기 (세 가지 방법)

2124 단어 공부 하 다.
자바 두 수의 최대 공약수 구하 기 (세 가지 방법)
1. 역법 전에 저도 몰 랐 습 니 다. 인터넷 에서 찾 아 봤 는데 0 과 0 이 아 닌 수의 약 수 는 모두 이 0 이 아 닌 숫자 입 니 다.
import java.util.Scanner;
public class HelloWorld {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int a = input.nextInt();
        int b = input.nextInt();
        int r = 1;
        if(a == 0 || b == 0){
            System.out.print(a == 0 ? b : a);//a,b其中有0的情况
        }
        else{
            for ( int i = 2; i <= a && i <= b;i++){
                if(a % i == 0 && b % i == 0){
                    r = i;
                }
            }
            System.out.print(r);
        }
}

}

결실
12 18
6
Process finished with exit code 0
0 12
12
Process finished with exit code 0


2. 전전 상 제법 이 방법 에서 나 는 배제 하지 않 았 다. a, b 중 0 의 경우

import java.util.Scanner;
public class HelloWorld {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int a = input.nextInt();
        int b = input.nextInt();
        int r = 1;
        do{
            r = a % b ;
            a = b;
            b = r;
            /*
            辗转相除法
            a对b取余,b赋值给a 余数赋值给b,,直到 b == 0
             */
        }while(b != 0);
        System.out.print(a);

}

}

결실
12 18
6
Process finished with exit code 0

3. 손 해 를 줄 이 는 방법 은 저도 0 을 배제 하지 않 았 습 니 다.

import java.util.Scanner;
public class HelloWorld {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int a = input.nextInt();
        int b = input.nextInt();
        int r = 1;
        do{
            a =  (a > b ? a-b : a);
            b =  (a < b ? b-a : b);
            /*
            更相减损数
            比较a,b大小,大数减小数,把差赋给大数,
            再次比较,相减,赋值,直到a,b相等,
            即为最大约数
             */
          }while(a != b);
        System.out.print(a);
    }
}

결실
12 18
6
Process finished with exit code 0

좋은 웹페이지 즐겨찾기