首页 > 其他分享 >求最大公约数

求最大公约数

时间:2023-12-28 15:36:36浏览次数:34  
标签:frac gcd int 最大公约数 公约数 mod

欧几里得算法

基础:设有几个数\(a,b,c\)若\(a|b\)且\(a|c\)则\(a|b+c\)故而我们可以推出\(a|xb+yc\)我们可以推出\((a,b) = (b,a\mod b)\)

注:()是括号内两个数公约数集合

​ |是整除得意思。

证明:因为\(a \mod b == a - [\frac a b]*b\)故而我们根据上述定理。设左边任何一个公约数为\(d\),由已知得:\(d|a\) 且 \(d|b\) 故 \(d|(a -[\frac b a]* b)\),故a得任何一个公约数都存在于\((b,a \mod b)\)里面。所以我们可以辗转相除,不断的迭代,直到最后\(a\mod b== 0\)的时候,因为0是能整除所有数,故传递过去的b就为最大公约数。

代码:

int gcd(int a,int b)
{
    if(!b) return a;
    gcd(b,a % b);
}

标签:frac,gcd,int,最大公约数,公约数,mod
From: https://www.cnblogs.com/apexvol-lord-xbdx/p/17932797.html

相关文章

  • P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题
    首先最大公因数和最小公倍数之积等于两个原数的积,这是基本性质然后两个数中,最小也是大于等于最大公因数,最大不超过最小公倍数最暴力的方法是,在这个范围内遍历其中一个数,积除以这个数得到另一个数,然后用辗转相除法进行判断就可以求解。当然,可以缩短范围。缩短范围有两个基本思想......
  • C练习题——打印两个数的最大公约数
    算法一:暴力求解(效率不够)#include<stdio.h>intmain(){inta=0;intb=0;scanf("%d%d",&a,&b);intmin=a<b?a:b;while(1){if((a%min==0)&&(b%min==0))break;......
  • 求两数的最大公约数和最小公倍数的n种方法
    最大公约数:公约数,亦称“公因数”。它是指能同时整除几个整数的数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。对任意的若干个正整数,1总是它们的公因数。最小公倍数:两个或多个整数公有的倍数中,除0以外最小的一个公倍数。......
  • 求其最大公约数和最小公倍数,一行代码完成
    题目:输入两个正整数m和n,求其最大公约数和最小公倍数。求出最大公约数就行,最小公倍数用m*n除以最大公约数就行packagemyself;importjava.util.Scanner;/***@AutherQY*@Date2023/12/11*/publicclassSix{publicstaticvoidmain(String[]args){......
  • P1029 最大公约数和最小公倍数问题(普及−) 题解
    题目传送门想要做这题,我们要先了解一下最大公约数。最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短......
  • 求两个数的最大公约数
    #include<stdio.h>intmain(){ inti,j,n=0; printf("请输入两个数:"); scanf_s("%d,%d",&i,&j);   while(i%j) {   n=i%j;   i=j;   j=n;  } printf("最大公约数为%d",n);  retu......
  • 1.两个数的最大公约数;2.输出某个范围的素数
    给定两个数,求其最大公约数#include<stdio.h>intmain(){ intm=24,n=18,r=0; while(m%n)//辗转相除法,改成"while(r=m%n)",下面的"r=m%n"可以省略 { r=m%n; m=n; n=r; } printf("%d\n",n); return0; }输出100-200内的素数#include<stdio.h>......
  • 最大公约数
    最大公约数目录最大公约数辗转相除法伪代码null辗转相除法https://zhuanlan.zhihu.com/p/324578532欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b)=gcd(b,amodb)。两个整数的最大公约数是能......
  • 求最大公约数伪代码
    欧几里得算法欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。计算方法:gcd(a,b)=gcd(b,amodb)(不妨设a>b且r=amodb,r不为0)其中gcd指最大公约数,mod指取模运算(因为操作数为正数,看成取余),伪代码里取余写作REMhttps://baike.baidu.com/item/%E6%AC%A......
  • 求最大公约数伪代码
    求最大公约数伪代码1.上网查找什么是求两个数的最大公约数的欧几里得算法(辗转相除法),提交算法说明和网上链接。欧几里得算法(辗转相除法)是求两个数的最大公约数的经典算法。其基本思想是:用较大的数除以较小的数,然后用余数作为新的被除数,继续进行操作,直到余数为0,此时的除数即为最......