在RSA这一类型的加密算法实现程序里,常常见到一个函数名字为gcd()。
这个是啥?
Gcd,最大公约数。
如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。
最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。
a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c)。
求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。
与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。
手算;
(8,9)=1,
(18,3)=3,
(12,16)=4,
辗转相除法C语言Win32实现如下;
#include <windows.h>
#include "resource.h"
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
int gcd(int ,int );
HINSTANCE hInst;
TCHAR szClassName[] = TEXT("gcdDemo");
int WINAPI
WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance