13 最大公约数
题目来源和说明
2011年哈尔滨工业大学计算机研究生机试真题
题目描述
输入两个正整数,求其最大公约数
样例
输入
49 14
输出
7
简要分析
要求a和b的最大公约数: (1)如果a和b全为0,则他们的最大公约数不存在 (2)如果a和b其中之一为0,则他们的最大公约数为a、b中非零的那个; (3)如果a和b都不为0,则使新a=b,新b=a%b,然后重复该过程。
C++ 代码
递归形式:
#include<iostream>
using namespace std;
int gcd(int a,int b) {
if(b==0) return a;
else return gcd(b,a%b);
}
int main() {
int a,b;
while(scanf("%d%d",&a,&b)!=EOF) {
printf("%d\n",gcd(a,b)); //最大公约数
}
return 0;
}
非递归形式
#include<iostream>
using namespace std;
int gcd(int a,int b) {
while(b!=0) {
int t=a%b;
a=b;
b=t;
}
return a;
}
int main() {
int a,b;
while(scanf("%d%d",&a,&b)!=EOF) {
printf("%d\n",gcd(a,b));
}
return 0;
}
高校夏令营机试训练 文章被收录于专栏
Leetcode题目太多,不知道如何准备高校夏令营?欢迎关注本专栏,和本小白一起准备夏令营吧! 本专题的规划如下: 截止到4月下旬:以王道考研为依托,提供夏令营机考的准备计划,打好基础 截止到5月中旬:以剑指offer进一步加强 本专题的内容如下: 1. 给出题目的在线测试链接,方面您检查代码的正确性 2. 给出题解