1. 程式人生 > >歐幾里得演算法的實現(Java)

歐幾里得演算法的實現(Java)

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; } }

相關推薦

各種密碼學演算法的GUI程式設計實現DES、AES、Present、擴充套件演算法、素性檢測

encryption-algorithm 各種密碼學演算法的 C# GUI程式設計實現,包含: DES AES Present 擴充套件歐幾里得演算法 素性檢測 最終的結果 DES加密 DES解密

求解最大公約數——演算法及其解同餘方程拓展

/* 擴充套件歐幾里得定理 擴充套件歐幾里得定理:對於兩個不全為0的整數a、b,必存在一組解x,y, 使得ax+by==gcd(a,b); 拓展歐幾里得實現 下面面的程式中,x和y用全域性變數儲存 int gcd(int a,int b) { int t,d; if

& 拓展演算法 講解 Euclid & Extend- Euclid Algorithm

歐幾里得& 拓展歐幾里得(Euclid & Extend-Euclid) 歐幾里得演算法(Euclid) 背景: 歐幾里德演算法又稱輾轉相除法,用於計算兩個正整數a,b的最大公約數。                                    

青蛙的約會擴充套件演算法+不定方程求解

1.折磨了我好久,不過大概是懂了。 2.題目: 兩隻青蛙在網上相識了,它們聊得很開心,於是覺得很有必要見一面。它們很高興地發現它們住在同一條緯度線上,於是它們約定各自朝西跳,直到碰面

演算法(輾轉相除法求最大公約數程式碼

    求解最大公約數依據如下定理:gcd(a,b) = gcd(b,a mod b) (不妨設a>b 且r=a mod b ,r不為0); 兩個整數的最大公約數等於其中較小的那個數和兩數相除餘數的最大公約數。 程式碼: 非遞迴演算法: int gcd(in

輾轉相除法演算法java實現

輾轉相除法,又叫歐幾里得演算法,是用以計算兩個非負整數的最大公約數,在數學課本上是見過了,程式又是怎樣實現的。其實,只需4行。 計算兩個非負整數 p 和 q 的最大公約數:若q 是 0,則最大公約數為

演算法實現Java

package euclidean_algorithm; import java.util.Scanner; /** * @author ALazy_cat * 歐幾里得演算法的自然語言描述:

JAVA實現輾轉相除法 演算法求逆

乘法逆元定義: 一般來講,如果要運算加法、減法、乘法、乘方,都應該滿足以下式子: (a+b)%c=(a%c+b%c)%c(a+b)%c=(a%c+b%c)%c (a−b)%c=(a%c−b%c)%c(a−b)%c=(a%c−b%c)%c (a⋅b)%c=(a%

學以致用——Java原始碼——最大公約數計算的普通演算法演算法的比較Greatest Common Divisor

Our life is frittered away by detail ... Simplify, simplify. by Henry Thoreau (美國哲學家亨利·梭羅說,我們的生活被瑣碎的細節消磨殆盡,要簡化,要簡化!) 所以,如果能夠找到現成的解決方案,我們就沒必要自己

求最大公約數——演算法JAVA

歐幾里得演算法 問題描述:給出兩個數m,n,求解這兩個數的最大公因數 由於演算法比較簡單,這裡不再贅述,我做的這個演算法是默認了m>n,如果是對於任意兩個數來說的話,我們這裡還需要一個比較大小。

演算法輾轉相除法描述,證明和python實現

greatest common divisor 又稱輾轉相除法 演算法描述:給定兩個正整數m和n,求他們的最大公因子,即能夠同時整除m和n的最大正整數。 演算法步驟: 若m<n,那麼m↔n,為了確保m>n。 求m除以n得到的餘數r。 若r為0,演算法

演算法(輾轉相除法)c++實現

歐幾里得演算法 歐幾里得演算法也叫輾轉相除法,是求兩個整數最大公約數的演算法。 當然也可以求最小公倍數。 演算法實現 其實演算法的實現原理就是,有整數a b兩個,每次求的一個數字r = a % b,然後把b放到a的位置,把r放到b的位置,遞迴呼叫。

JAVA實現輾轉相除法 演算法求逆

public int niyuan(int a,int b) //求550關於模1769的乘法逆元 // 550*X(mod1769)=1 // niyuan(1769,550) { int[] m={1,0,a}; int[] n={0,1,b}; int[] temp=new

java實現 拓展演算法 exgcd

返回的陣列中,第一個值是最大公約數,第二個值表示C++語言實現中的x,第三個值表示y。 存在整數對 x,y ,使得 gcd(a,b)=ax+by public static long[] ex

演算法資料結構Java實現演算法

1.背景           歐幾里得演算法是一個求最大因子的快速演算法。如果m,n存在最大因子k,假設m=x*n+r,那麼m和n可以整出k的話,r也肯定可以整除k           因為定理:如果M

同餘定理演算法

如果  (a-b)%m==0  那麼 a%m==0  b%m==0 a,b關於模m同餘。   求最大公約數 #include "pch.h" #include<iostream> #include<cstdio> #include<

演算法複習——擴充套件演算法擴充套件,逆元,整除

①歐幾里得演算法 就是求gcd的有趣的輾轉相除法,不再贅述啦0v0 程式碼: int gcd(int a,int b) { if(b==0) return a; else return gcd(b,a%b); } ②擴充套件歐幾里得演算法 需要解決這樣的問題:兩個非0整數a,b

POJ-1061-青蛙的約會 擴充套件演算法

原題連結: http://poj.org/problem?id=1061 兩隻青蛙在網上相識了,它們聊得很開心,於是覺得很有必要見一面。它們很高興地發現它們住在同一條緯度線上,於是它們約定各自朝西跳,直到碰面為止。可是它們出發之前忘記了一件很重要的事情,既沒有問清楚對方的特徵,也沒有約定

C語言輾轉相除/相減法演算法求最大公約數和最小公倍數

#include <stdio.h> #include <stdlib.h> //題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。 //採用任何兩種演算法來完成上述題目,並比較2種演算法的時間複雜度和空間複雜度。 int main() { int

HDU-2669-Romantic 擴充套件演算法

原題連結: http://acm.hdu.edu.cn/showproblem.php?pid=2669 The Sky is Sprite. The Birds is Fly in the Sky. The Wind is Wonderful. Blew Throw the Trees