欧几里得算法

欧几里得算法基本思想: 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;
全部评论

相关推荐

03-12 21:51
门头沟学院 C++
pdd卡怎么严吗&nbsp;笔试a出来两道,第三题a出来20%直接给挂了😭😭😭
鳍足目:我a了2.5道也挂了,但是组里同学只a了1.6道进面了,而且我和他都是无实习,本硕同校,感觉全是玄学
投递拼多多集团-PDD等公司10个岗位 > 拼多多求职进展汇总
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务