求a和b的最大公約數
阿新 • • 發佈:2020-12-16
用輾轉相除法很簡單
方法是大數除以小數,如果餘數不為0,就用小數(原除數)再除以餘數,直到沒有餘數時,此時的除數就是最大公約數。
比如243和375
375 / 243 = 1 …… 132
243 / 132 = 1 …… 111
132 / 111 = 1 …… 21
111 / 21 = 5 …… 6
21 / 6 = 3 …… 3
6 / 3 = 2
所以243和375的最大公約數是除數3
程式碼也很簡單
C++:
#include <iostream>
#include <algorithm>
using namespace std;
int division(int a,int b)
{
if(a%b!=0){
division(b,a%b);
}else{
return b;
}
}
int main()
{
int a,b;
cin>>a>>b;
int maxx,minn;
maxx = max(a,b);
minn = min(a,b);
int x = division(maxx,minn);
cout<<x;
}
Java:
import java. io.BufferedInputStream;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Main m = new Main();
Scanner sc = new Scanner(new BufferedInputStream(System.in));
int a = sc.nextInt();
int b = sc.nextInt();
int max = Math.max(a, b);
int min = Math.min(a, b) ;
//System.out.print(m.division(max,min));
int res = m.division(max, min);
System.out.print(res);
}
int division(int a,int b){
if(a%b!=0){
return division(b,a%b);
}else{
return b;
}
}
}
幾乎沒啥不一樣的地方,Java要注意每個分支都得有return。