1. 程式人生 > 其它 >求a和b的最大公約數

求a和b的最大公約數

技術標籤:Java基礎C++演算法javac++

用輾轉相除法很簡單

方法是大數除以小數,如果餘數不為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。