要计算a和b的最大公约数,假设a>b
辗转相除法(欧几里得法)
1、计算temp= a%b;
2、如果temp 为0,说明a可以被b整除,则b就是最大公约数
3、否者令a=b;b=temp;重复步骤1,直到temp=0
代码:
unsigned long long gcd(unsigned long long a,unsigned long long b){
unsigned long long temp = a % b;
while(temp){
a = b;
b= temp;
temp = a % b;
}
return b;
}
更相减陨法
1、若a和b都是偶数,则用2对其简约
2、计算temp=a-b,并判断temp是否等于b,若相等,则最小公倍数就是第一步中约掉的2与temp的乘积
3、 若不相等。则令a=b;b=temp;重复步骤2,直到temp等于b
代码
unsigned long long gcd(