2025年公约数相关算法

公约数相关算法公约数定义 公约数 亦称 公因数 它是一个能被若干个整数同时均整除的整数 如果一个整数同时是几个整数的约数 称这个整数为它们的 公约数 公约数中最大的称为最大公约数 对任意的若干个正整数 1 总是它们的公因数 问题背景 求两个数的最大公约数 求多个数的最大公约数 求多个数的公约数 问题 2

大家好,我是讯享网,很高兴认识大家。

公约数定义

公约数,亦称“公因数”。它是一个能被若干个整数同时均整除的整数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。对任意的若干个正整数,1总是它们的公因数。

问题背景

  1. 求两个数的最大公约数
  2. 求多个数的最大公约数
  3. 求多个数的公约数

问题2、3其实质上也就是问题1的转化。
求2可以先求出其中两个数的最大公约数,将这个最大公约数同第三个数接着求其二者最大公约数,依次求解,即可得到多个数的最大公约数。
求3可以求出2,其最大公约数的公约数即是问题的解。


讯享网

算法

辗转相减法

求a、b的最大公约数
当a>b时,若a中含有与b相同的最大公约数,那么a-b中也有与b相同的最大公约数。
当a<b时,若a中含有与b相同的最大公约数,那么b-a中也有与a相同的最大公约数。
直到a=b为止,此时a或b就是最大公约数。

 public int Gcd(int a,int b){ 
    if(a<0||b<0) return -1; if(a==b) return a; else if(a>b) return Gcd(a-b,b); else return Gcd(a,b-a); } 

讯享网

辗转相除法

求a、b的最大公约数
对正整数a,b进行连续的求余运算,直到余数为0为止,此时非0的除数就是最大公约数。
即Gcd(a,b)=Gcd(b,r) r=a%b
例如50和15的最大公约数Gcd(50,15)=Gcd(15,5)=Gcd(5,0)

讯享网public int Gcd1(int a,int b){ 
    if(a<0||b<0) return -1; int r=0; while (a%b!=0){ 
    r=a%b; a=b; b=r; } return b; }``` 
小讯
上一篇 2025-03-14 14:37
下一篇 2025-02-24 18:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/128632.html