Fancy DSA Fancy DSA
数据结构
算法
LeetCode
  • 关于
  • 导航 (opens new window)
  • 分类
  • 标签
  • 归档
设计模式 (opens new window)
博客 (opens new window)
GitHub (opens new window)

Jonsam NG

想的更多,也要想的更远
数据结构
算法
LeetCode
  • 关于
  • 导航 (opens new window)
  • 分类
  • 标签
  • 归档
设计模式 (opens new window)
博客 (opens new window)
GitHub (opens new window)
  • 开始上手
  • Plan 计划
  • Roadmap 路线
  • 算法简介
  • Sort 排序

  • Search 搜索

  • Recursive 递归

    • BinaryEquivalent [二进制转化]
    • BinarySearch [二分搜索]
    • EuclideanGCD [辗转相除法]
      • 介绍
      • 原理
      • 实现
      • 参考
    • Factorial [阶乘]
    • FibonacciNumberRecursive [斐波那契数]
    • FloodFill [Flood Fill算法]
    • KochSnowflake [科赫雪花算法]
    • Palindrome [回文]
    • TowerOfHanoi [汉诺塔]
  • Graph 图

  • Tree 树

  • Math 数学

  • Hash 哈希

  • String 字符串

  • BitManipulation 位操纵

  • Backtracking 回溯

  • DynamicProgramming 动态规划

  • Cache 缓存

  • Array 数组

  • Ciphers 密码学

  • Conversions 转换

  • ProjectEuler 欧拉计划

  • 其他

  • 算法
  • Recursive 递归
jonsam
2022-05-01
目录

EuclideanGCD [辗转相除法]

# 介绍

在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法。

# 原理

两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数相除余数的最大公约数。由辗转相除法也可以推出,两数的最大公约数可以用两数的整数倍相加来表示,如 21 = 5 × 105 + (−2) × 252 。这个重要的结论叫做裴蜀定理。两个数的最大公约数通常写成 GCD (a, b)。

在现代密码学方面,它是 RSA 算法(一种在电子商务中广泛使用的公钥加密算法)的重要部分。辗转相除法是现代数论中的基本工具。

EuclideanGCD

# 实现

# JavaScript

/*
Calculates GCD of two numbers using Euclidean Recursive Algorithm
:param first: First number
:param second: Second number
:return: GCD of the numbers
*/
function euclideanGCDRecursive (first, second) {
  if (second === 0) {
    return first
  } else {
    return euclideanGCDRecursive(second, (first % second))
  }
}

/*
Calculates GCD of two numbers using Euclidean Iterative Algorithm
:param first: First number
:param second: Second number
:return: GCD of the numbers
*/
function euclideanGCDIterative (first, second) {
  while (second !== 0) {
    const temp = second
    second = first % second
    first = temp
  }
  return first
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 参考

  • 辗转相除法 - 维基百科,自由的百科全书 (opens new window)
  • 深究递归和迭代的区别、联系、优缺点及实例对比 (opens new window)
编辑 (opens new window)
上次更新: 2022/06/20, 20:15:04
BinarySearch [二分搜索]
Factorial [阶乘]

← BinarySearch [二分搜索] Factorial [阶乘]→

最近更新
01
0-20题解
10-31
02
本章导读
10-31
03
算法与转换:Part1
10-28
更多文章>
Theme by Vdoing | Copyright © 2022-2022 Fancy DSA | Made by Jonsam by ❤
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式