最大公因数(辗转相除法,函数)——pow_na的博客——c++

题目描述

最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法。

现在给定两个正整数,需要你编写程序求它们的最大公约数。

输入格式

输入一行,包含两个正整数(<1,000,000,000)。

输出格式

输出一个正整数,即这两个正整数的最大公约数。

输入样例#1
82 71
输出样例#1
1
题目说明

求最大公约数可以使用辗转相除法:

假设a > b > 0,那么a和b的最大公约数等于b和a%b的最大公约数,然后把b和a%b作为新一轮的输入。

由于这个过程会一直递减,直到a%b等于0的时候,b的值就是所要求的最大公约数。

比如:

9和6的最大公约数等于6和9%6=3的最大公约数。

扫描二维码关注公众号,回复: 15174462 查看本文章

由于6%3==0,所以最大公约数为3。

题目解析

关于辗转相除法的简介,如上。

然后,直接开始定义函数!

#include <bits/stdc++.h>
using namespace std;
int gcd(int m,int n)
{
	if (m % n == 0)
	{
		return n;
	}
	else
	{
		return gcd(n,m % n);
	}
}

想必有基础的都能看得懂

紧接着,开始运行函数:


int main()
{
	int m,n;
	cin >> m >> n;
	cout << gcd (m,n) << endl;
	return 0;
}

一个输入一个输出,简简单单

最后,源代码

#include <bits/stdc++.h>
using namespace std;
int gcd(int m,int n)
{
	if (m % n == 0)
	{
		return n;
	}
	else
	{
		return gcd(n,m % n);
	}
}
int main()
{
	int m,n;
	cin >> m >> n;
	cout << gcd (m,n) << endl;
	return 0;
}

可见十分简单。

猜你喜欢

转载自blog.csdn.net/m0_73557158/article/details/129927408