欧几里得定理辗转相除证明
证明gcd(a,b)=gcd(b,a%b)
采用反证法
设gcd(a,b)=k
则设a=x1k,b=x2k
a%b=a-b * (a/b),a/b * b可以看做x3倍的k,所以a%b与b仍然有k这个公因数
假设有一个k'为gcd(b,a%b)
则b为k'的倍数,同时a%b为k'倍数因为b * (a/b)显然为k'倍数,所以则显然a也是k'的倍数
所以证得gcd(a,b)=k'与原条件不符,得证
int gcd(int a,int b){
if(a%b==0){
return b;
}
else{
return gcd(b,a%b);
}
}
完结