辗转相除法
证明:
假设存在整数a,b其中a大于b。那么有
a=kb+r
成立,其中r为a除以b所留余数。
假设a,b的最大公约数为m,那么a/m为整数,由此可得(kb+r)/m为整数。
又因为b/m为整数,则r/m也是整数,即m也是r的因子,又因为m为(kb+r)与b的最大公因子,那么如果r与b的最大公因子大于m,那么一位置存在n>m使得b/n,r/n为整数,那么意味着(kb+r)/n为整数,即a,b的最大公因子为n,与假设矛盾。
综上,a,b的最大公因子亦为,b,r的最大公因子。
算法:
#include<iostream>
using namespace std;
int main(){
int