欧几里得算法

欧几里得算法基本思想: Gcd(a,b) = Gcd(b , a%b)  直到最后余数为0

例如 Gcd(70,15) = Gcd(15,10)            70%15 = 10

Gcd(15,10) = Gcd(10,5)               15%10 = 5

Gcd(10,5)  = Gcd(5,0)                  10%5 = 0        余数为0 计算结束,最后结果为 5

这里还有一些比较有意思的定理       如果 M > N, 则 M mod N < M/2

有兴趣的可以自己证明一下  提示分为两种情形   1  N <= M/2     2  N > M/2

#include<stdio.h> //  欧几里得算法

//  用于求两个整数的最大公因数
int Gcd( int M,int N)
{
int Rem;
// 如果M < N  第一次运算将他们互换
while(N > 0) //当余数为0时循环终止
{
Rem = M % N;
M = N;
N = Rem;
}

return M;

}


int main(void)
{
printf("%d",Gcd(70,15));
return 0;
全部评论

相关推荐

06-26 17:24
已编辑
宁波大学 golang
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
08-14 16:48
门头沟学院 Java
字节我求你别面我了,把我从人才库里捞起来再挂掉。。。我也很受打击,很绝望好嘛
码农索隆:面试官:“这小子讷啊,这小子挂这么多次,我倒要面面,看看怎么个事”
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务