運行以下代碼需要導入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