求解最大公约数(两种)

简介: 求解最大公约数(两种)

题目

输入两个整数 a 和 b,请你编写一个函数,int gcd(int a, int b), 计算并输出 a 和 b 的最大公约数。


输入格式

共一行,包含两个整数 a 和 b。


输出格式

共一行,包含一个整数,表示 a 和 b 的最大公约数。


数据范围

1≤a,b≤1000


输入样例:

12 16


输出样例:

4


解析

解法1:递归

思路



代码

#include <iostream>usingnamespacestd;
intgcd(inta, intb){
if(a%b==0) returnb;
elsegcd(b,a%b);  
}
intmain(){
inta,b;
cin>>a>>b;
cout<<gcd(a,b);
return0;
}



解法2:

1、暴力从1开始除以,能整除以即得到最大公因数

#include <iostream>usingnamespacestd;
intgcd(inta, intb){
intc=min(a,b);
intd;
for(inti=1;i<=c;i++){
if(a%i==0&&b%i==0){
d=i;  
        }
    }
returnd;
}
intmain(){
inta,b;
cin>>a>>b;
cout<<gcd(a,b);
return0;
}



2、从两者最小值开始除以,能整除即得到最大公因数

#include <iostream>usingnamespacestd;
intgcd(inta, intb){
intc=min(a,b);
intd;
for(inti=c;i>=0;i--){
if(a%i==0&&b%i==0){
d=i;  
break;
        }
    }
returnd;
}
intmain(){
inta,b;
cin>>a>>b;
cout<<gcd(a,b);
return0;
}




❤️❤️❤️忙碌的敲代码也不要忘了浪漫鸭!


目录
相关文章
|
7月前
|
算法
求最大公约数和最小公倍数的算法
求最大公约数和最小公倍数的算法
76 0
|
3月前
|
移动开发 算法
求其最大公约数和最小公倍数
求其最大公约数和最小公倍数。
76 5
|
存储
求解素数的筛选法
求解素数的筛选法
|
7月前
|
算法 Python
最大公约数算法
最大公约数算法
|
7月前
|
算法 Python
最小公倍数算法
最小公倍数算法
|
算法 搜索推荐 程序员
欧几里得算法
欧几里得算法(Euclidean algorithm)是一种计算两个数的最大公约数(Greatest Common Divisor,简称 GCD)的算法。欧几里得算法的基本思想是通过辗转相除的方式,将两个数逐步缩小,直到它们的公约数为止。欧几里得算法的时间复杂度为 O(log n)。
229 1
|
算法 C语言 C++
【数论】最大公约数、约数的个数与约数之和定理
先来科普下什么是约数:当a能被b整除,我们就说b为a的约数,b的倍数为a
129 0
求解最大公约数和最小公倍数
求解最大公约数和最小公倍数
求解最大公约数和最小公倍数
|
算法
求最大公约数和最小公倍数的几种算法
求最大公约数和最小公倍数的几种算法
149 0
欧几里得算法,既辗转相除法。用于计算正整数a,b的最大公约数
欧几里得算法,既辗转相除法。用于计算正整数a,b的最大公约数
110 0