欧几里德游戏的算法怎么写
这是欧几里德的游戏吗?欧几里德算法看下面。
我还是不太明白你的用意。根据问题,先写出两个正整数6和3。第一个人不会写数字,输了。
写六两个正整数,只有四个,第二个人又输了。你确定只有一个确定的结果吗?
欧几里德算法
欧几里德算法,也称为轮流除法,用于计算两个整数A和B的最大公约数..其计算原理取决于以下定理:
定理:gcd(a,b) = gcd(b,a mod b)
证明A可以表示为a = kb+r,那么R = A mod B。
假设d是a和b的公约数,那么有
D|a,d|b,r = a-kb,所以d|r
所以d是(b,a mod b)的公约数。
假设d是(b,a mod b)的公约数,那么
D | b,d |r,但是a = kb +r R。
所以d也是(a,b)的公约数。
所以(a,b)和(b,a mod b)的公约数相同,它们的最大公约数一定相等,这是证明的。
欧几里德算法就是基于这个原理,它的算法用C++语言描述为:
无效掉期(利息和利息。一、int & ampb)
{
int c = a;
a = b;
b = c;
}
int gcd(int a,int b)
{
如果(0 == a)
{
返回b;
}
如果(0 == b)
{
返回a;
}
如果(a & gtb)
{
互换(a,b);
}
int c;
for(c = a % b;c & gt0 ;c = a % b)
{
a = b;
b = c;
}
返回b;
}
参考资料:
因特网