概述
算法如功夫,套路练久了,才能应用自如!
学功夫不能死练,知其所以然,取长补短!
#include <iostream>
using namespace std;
int gcd( int a, int b )
{
int rem;
while ( b )
{
rem = a % b;
a = b;
b = rem;
}
return a;
}
int main( )
{
int a, b;
cout << "请输入2个数:";
cin >> a >> b;
cout << "最大公约数为:" << gcd( a, b );
return 0;
}
例如,123456 和 7890 的最大公因子是 6, 这可由下列步骤看出:
其中“a mod b”是指取 a ÷ b 的余数。
a b a mod b
123456 7890 5106
7890 5106 2784
5106 2784 2322
2784 2322 462
2322 462 12
462 12 6
12 6 0
只要可计算余数都可用辗转相除法来求最大公因子。这包括多项式、复整数及所有欧几里德定义域(Euclidean domain)。
辗转相除法的运算速度为 O(n2),其中 n 为输入数值的位数。
a b a mod b
123456 7890 5106
7890 5106 2784
5106 2784 2322
2784 2322 462
2322 462 12
462 12 6
12 6 0
只要可计算余数都可用辗转相除法来求最大公因子。这包括多项式、复整数及所有欧几里德定义域(Euclidean domain)。
辗转相除法的运算速度为 O(n2),其中 n 为输入数值的位数。
最后
以上就是明亮裙子为你收集整理的算法如功夫——C++输入两个数求它们的最大公约数 的全部内容,希望文章能够帮你解决算法如功夫——C++输入两个数求它们的最大公约数 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复