最大公因数
在数学中,辗转相除法,又称欧几里得算法,是求最大公因数的算法。
两个整数的最大公因数是能够同时整除它们的最大的正整数。辗转相除法基於如下原理:
两个整数的最大公因数等於其中较小的数和两数的差的最大公因数。例如,252和105的最大公因数是21(252 = 21 × 12;105 = 21 × 5);因为252 ? 105 = 21 × (12 ? 5) = 147,所以147和105的最大公因数也是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零。这时,所剩下的还没有变成零的数就是两数的最大公因数。
请以C/C++/JAVA实作最大公因数演算法
Input
[第一行为测资的笔数,例如3则代表接下来有3笔测资]
[第二行开始为测资,一笔一行,会有两个数,必须求出其最大公因数]
[以此类推…]
Output
[从第一笔测资开始,一笔一行的印出每笔测资的最大公因数,如第一笔测资25与15的最大公因数为5,则output中第一行印出5]
Example Input
3
25 15
63 81
48 1024
Example output
5
9
16
答案:
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class gongyingshu { public static void main(String[] args) { List<Integer> results = new ArrayList<Integer>(); Scanner scan = new Scanner(System.in); int j =scan.nextInt(); int a,b; for(int i=0;i<j;i++){ a =scan.nextInt(); b =scan.nextInt(); results.add(gcd(a,b)); } for(int result :results){ System.out.println(result); } } public static int gcd(int a, int b) { int r; while(b != 0) { r = a%b; a = b; b = r; } return a; } }