求兩個數最大公約數的三種方法(java實現)


運行以下代碼需要導入java.util.Scanner包,即在代碼中加如下代碼:

import java.util.Scanner;

 

1.相減法

兩個數,相等時,最大公約數為他們其中任意一個。不相等時,用大數減小數。得到的差和之前的那個小數再次相減,直到兩個數相等,這兩個中,任意一個都是最大公約數。(代碼如下)

        int m,n;
        //從鍵盤輸入m、n的值
        Scanner scanner = new Scanner(System.in);
        m = scanner.nextInt();
        n = scanner.nextInt();
        
        //相減法
        while((m-n)!=0) {
            if(m>n) {
                m = m-n;
            }else {
                n = n-m;
            }
        }
        //輸出m或n都可以
        System.out.println("最大公約數是:"+m);            

 

2.窮舉法

如果大數可以整除小數,那么最大公約數為小數。如果不能整除小數,那么這兩個數就按大到小依次對比小數小的數求余,遇到都能夠整除的,就是最大公約數。(代碼如下)

     int m,n;
        //從鍵盤輸入m、n的值
        Scanner scanner = new Scanner(System.in);
        m = scanner.nextInt();
        n = scanner.nextInt();
        //窮舉法
        if(m>=n) {
            for(int i=n;i>=1;i--) {
                if((m%i)==0&&(n%i)==0) {
                    //輸出m或n都可以
                    System.out.println("最大公約數是:"+m);
                    break;//找到最大公約數后跳出循環
                }
            }
        }else {
            for(int j=m;j>=1;j++) {
                if((m%j)==0&&(n%j)==0) {
                    //輸出m或n都可以
                    System.out.println("最大公約數是:"+m);
                    break;//找到最大公約數后跳出循環
                }
            }
        }

3.輾轉相除法

用大數對小數求余,若余數為0,則除數為最大公約數。若余數不為0,將此余數作為除數,小數作為被除數,重新求余,直到余數為0為止。此時的最大公約數為余數。例如:27和6.  27%6=3.  6%3=0.  所以最大公約數為3.(代碼如下)

     int m,n;
        //從鍵盤輸入m、n的值
        Scanner scanner = new Scanner(System.in);
        m = scanner.nextInt();
        n = scanner.nextInt();
        //輾轉相除法
        if(m>=n) {
            int x = m%n;
            while(x!=0) {
                m=n;
                n=x;
                x=m%n;
            }
            //輸出m或n都可以
            System.out.println("最大公約數是:"+m);
        }else {
            int y = n%m;
            while(y!=0) {
                n=m;
                m=y;
                y=n%m;
            }
            //輸出m或n都可以
            System.out.println("最大公約數是:"+m);
        }
    }

 

原文鏈接:https://blog.csdn.net/yuemeicheng/article/details/81204864

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM