7.  最大公约数(辗转相除法)

摘要:
找到两个数字A和B=0的最大公约数{A=B;B=yu;if(aswap(A,B);//别忘了,总是使A大于B,yu=A-B;}if(yu==0)printf(“%d”,B);return0;}

题目描述 Description

求两个数AB的最大公约数。 1<=A,B<=2^31-1

输入描述 Input Description

两个整数AB

输出描述 Output Description

最大公约数gcd(A,B)

样例输入 Sample Input

8 12

样例输出 Sample Output

4

自己的答案:

#include

using namespace std;

#include

long long a,b,yu;

int main()

{

       cin>>a>>b;

       if(a

       swap(a,b);

       yu=a-b;

       while(yu!=0)

       {

              a=b;

              b=yu;

             if(a

           swap(a,b);//不要忘记,始终让a大于b才行,

              yu=a-b;

       }

       if(yu==0)

       printf("%d",b);

       return 0;

}

免责声明:文章转载自《7.  最大公约数(辗转相除法)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇8.最大公约数和最小公倍数问题GRYZ[寒假模拟赛]下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

求最大公约数 算法记录

1 #include <iostream> 2 using namespacestd; 3 int gcd(int a, intb) 4 { 5 if (0 == a %b) 6 { 7 returnb; 8 } 9 return gcd(b, a %b); 10 } 11 int gcdd(int* p, in...

51 nod 1188 最大公约数之和 V2

1188最大公约数之和V2 题目来源:UVA 基准时间限制:2秒 空间限制:262144KB 分值:160难度:6级算法题 给出一个数N,输出小于等于N的所有数,两两之间的最大公约数之和。 相当于计算这段程序(程序中的gcd(i,j)表示i与j的最大公约数): G=0; for(i=1;i<N;i++) for(j=i+1;...

最大公约数/最小公倍数

#include <iostream> using namespace std; int main() { int a, b, temp1, temp2; int c; cout << "请按从大到小的顺序两个数字" << endl; cin >> a >> b; temp1 = a,...

用递归算法求两个数的最大公约数

int gcd(int m,int n){int g;if (n==0)g=m;elseg=gcd(n,m%n)return g;}void main(){int m,n;scanf("%d,%d",&m,&n);printf("gcd=%d",gcd(m,n));}...

【笔记】很基础的数论知识

2020.1.17 qbxt笔记 最大公约数、最小公倍数 定义 如果d是能同时整除a, b中最大的正整数,我们称d为a和b的最大公约数,记作d = gcd(a, b) 如果一个数d,既是a的倍数,又是b的倍数,同时d是满足这两个条件中的最小正整数,那么称d是a和b的最小公倍数,记作d =lcm(a, b) 辗转相除法 •假设a > b,我们有gcd(a...

欧几里得算法(GCD)求最大公约数的数学原理

很早就学过欧几里得算法,但是一直不知道它的原理。几乎每本算法书都会提到它,但是貌似只有数学书上才会见到它的原理。。。 前段时间粗粗看了点数论(《什么是数学》),惊讶于这个原理的奇妙。现在把它通俗地写下来,以免自己忘记。 欧几里得算法是求两个数的最大公约数(Greatest Common Divisor (GCD))的算法,我们首先假设有两个数 a 和 b,其...