簡單學完HTML+CSS+JS,現在開始看演算法(第四版)----歐幾里得演算法
阿新 • • 發佈:2019-01-07
歐幾里得演算法
package euclidean_algorithm; import java.util.Scanner; /** * @author ALazy_cat * 歐幾里得演算法的自然語言描述: * 計算兩個非負整數x和y的最大公約數: 若y = 0,則最大公約數為x; 否則將remainder = x % y,x和y的 * 最大公約數即為y和remainder的最大公約數 */ public class EuclideanAlgorithm { public static void main(String[] args) { Scanner in= new Scanner(System.in); System.out.print("請輸入兩個整數: "); int x = 0, y = 0; x = in.nextInt(); y = in.nextInt(); System.out.println("x, y的最大公約數是: " + euclideanAlgorithm_01(x, y, 1)); System.out.println("---------------------"); System.out.println("x, y的最大公約數是: " + euclideanAlgorithm_02(x, y, 1)); }//歐幾里得演算法的遞迴實現 public static int euclideanAlgorithm_01(int x, int y, int count) { //當y = 0時,遞迴結束 int remainder = 0; System.out.println("第" + count++ + "次遞迴: " + "x = " + x + " , " + "y = " + y); if (y == 0) return x; remainder = x % y; return euclideanAlgorithm_01(y, remainder, count); }//歐幾里得演算法的迴圈實現 public static int euclideanAlgorithm_02(int x, int y, int count) { int remainder = 0; while (y != 0) { System.out.println("第" + count++ + "次迴圈: " + "x = " + x + " , " + "y = " + y); remainder = x % y; x = y; y = remainder; } System.out.println("第" + count++ + "次迴圈: " + "x = " + x + " , " + "y = " + y); return x; } }