详解最大公约数做法
目录
题目描述
做法
整体代码
辗转相除法解决最大公约数(洛谷B4025)
题目描述
定义两个正整数的最大公约数 gcd(a,b) 为最大的正整数 d,使得 d 可以同时整除 a 和 b。
例如,gcd(9,12)=3,因为 9÷3 和 12÷3 的余数是 0,而无法找到一个比 3 更大的正整数满足要求。
现在给定两个正整数 a,b,要求出 gcd(a,b)。
输入格式
输入两个正整数 a,b。
输出格式
输出 gcd(a,b)。
输入输出样例
输入 #1
9 12
输出 #1
3
输入 #2
100 1000
输出 #2
100
说明/提示
对于 40% 的数据,1≤a,b≤1000。
对于所有的数据,1≤a,b≤109。
什么是辗转相除法
用较大的数除以较小的数,再以除数和余数反复做除法,当除的时候余数为0时,取当前算式除数为最大公约数。
做法
int gongyueshu(int m,int n)
{int t = 1;while(t != 0)//在余数为0之前一直除和减{t=m%n;//除m=n; n=t;}return m;//函数中输出并结束使用return+输出的东西
}
3. 整体代码
#include<bits/stdc++.h>
using namespace std;
long long a[100005];
int b;
int a1,b1;
int gongyueshu(int m,int n)//放在主函数前面
{int t = 1;while(t != 0)//在余数为0之前一直除和减{t=m%n;//除m=n; n=t;}return m;//函数中输出并结束使用return+输出的东西
}int main(){cin>>a1>>b1;cout<<gongyueshu(a1,b1);//调用即可(第一次打没加cout,发现什么也没有输出)return 0;
}
-
整体代码
#include<bits/stdc++.h>using namespace std;long long a[100005];int b;int a1,b1;int gongyueshu(int m,int n)//放在主函数前面{int t = 1;while(t != 0)//在余数为0之前一直除和减{t=m%n;//除m=n;n=t;}return m;//函数中输出并结束使用return+输出的东西}int main(){cin>>a1>>b1;cout<<gongyueshu(a1,b1);//调用即可(第一次打没加cout,发现什么也没有输出)return 0;}