• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
AC test
一切伟大的思想,都有一个微不足道的开始。
博客园    首页    新随笔    联系   管理    订阅  订阅
欧几里得算法

 

题目:输出任意两个自然数,求他们的最大公约数

方法一:模拟法

方法二:欧几里得算法

   欧几里德算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。
   欧几里德算法和扩展欧几里德算法可使用多种编程语言实现。
 

求解方法:

1、a/b=q...r1 .

2.若r1=0,则a和b的最大公约数为b

3.若r1≠0,则继续做除法: b/r1=q。。。r2

4.若r2=0,则a和b的最大公约数为r1

5.若r2≠0,则继续做除法:r1/r2=q....r3.

6.如此重复下去知道出现整除位置,余数为0时的除数就是a和b的最大公约数

 

代码如下

#include <bits/stdc++.h>
using namespace std;
int main() {
	int a, b, tmp;
	cin>>a>>b;
	while(tmp=a%b) {
		a=b;
		b=tmp;
	}
	cout<<b<<endl;
	return 0;
} 

  

 

posted on 2020-07-30 21:51  ACtest  阅读(175)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3