借鉴了其他博主思路,代码是自己写的。
https://blog.csdn.net/tterminator/article/details/50927393
一、问题描述
求两个正整数的最大公约数(欧几里得算法)。
二、问题分析
假设有两个正整数x,y,则肯定有以下公式成立
x = k * y + b,其中 b = x % y
若x和y有最大公约数z,则z必定可以分别整除x和y,那么必有下式
b = x - k * y可以被z整除。
也即两个较大的数x和y的公约数问题,可以转换为两个较小的数x和b的公约数问题。
int maxComDiv(int num1,int num2){
//求最大公约数
int temp=0;
while(num1!=0){
temp=num2%num1;
num2=num1;
num1=temp;
}
return num2;
}