当前位置:首页 > C++知识 > 正文内容

【初级篇】求最大公约数的方法

亿万年的星光4年前 (2021-01-28)C++知识21175

1.辗转相除法

int gcd(int a,int b)

 { 
     if(a%b==0)
         return b;
     else
         return gcd(b,a%b);
 }

2.穷举法

int divisor (int a, int b) //自定义函数求两数的最大公约数

 {
      int  temp;//定义整型变量
     temp=(a>b)?b:a;//采种条件运算表达式求出两个数中的最小值
     while(temp>0)

      {
              if(a%temp==0&&b%temp==0)//只要找到一个数能同时被a,b所整除,则中止循环
              break;
              temp--;//如不满足if条件则变量自减,直到能被a,b所整除 
      } 
     return (temp);//返回满足条件的数到主调函数处 
  }

3.更相减损法

 int gcd2(int m,int n)
 {
     int i=0,temp,x;
     while(m%2==0&&n%2==0)//判断m和n能被多少个2整除
    {
         m/=2;
         n/=2;
         i+=1;
    } 
     if(m<n)//m保存大的值
   {
        temp=m;
        m=n;
        n=temp;
   } 
     while(x)
   {
        x=m-n;
        m=(n>x)?n:x;
        n=(n<x)?n:x;
        if(n==(m-n))
        break;
   }
    if(i==0)
    return n;
        else
        return (int) pow(2,i)*n;
  }

4.其他方法

int gcd(int a,int b)
{
    int c;
    while(b)
    {
        c=a%b;
        a=b;b=c;
    }
    return a;
}


关于最大公约数的一些结论:(不对)

求Sa(a1*a2*a3*a4*a5...)和Sb(b1*b2*b3*b4*b5...)的最大公约数

等于他们对应每一项的最大公约数的乘积。比如:

Sa=(4*3*1*5)=60

Sb=(2*6*2*3)=72

60和72的最大公约数是12。如果把他们单独拆开后,上下每一项对于的最大公约数分别是

2*3*2*1=12。结论一致。在计算中可以用这个公式,来缩小计算数的大小。

扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【初级篇】函数(一)

【初级篇】函数(一)

0.函数的引入为什么要用函数呢?比较官方的说法是,过程的复用,你的一段逻辑,你有一段逻辑不断的在复用,就封装成函数去调用它。通俗的说法就是,把重复的过程集中到一块。例如,大家都学过如何求正方形的面积,...

【入门篇】>>> DEVC++下载、安装、简单使用

【入门篇】>>> DEVC++下载、安装、简单使用

什么是DEVC++    DEVC++是一款编程工具,是一个Windows环境下的一个适合于初学者使用的轻量级C/C++ 集成开发环境(IDE),它是一款自由软件,遵守G...

C++整型的数据范围

数据类型标识符占字节数数值范围数值范围短整型short [int]2(16位)-32768~32767-2^15 到2^15  -1整型[long] int4(32位)-...

【数据结构】栈—表达式括号匹配

【数据结构】栈—表达式括号匹配

【题目描述】假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则...

【数据结构】队列—基本操作

【数据结构】队列—基本操作

一、C++实例分析       C++队列queue模板类的定义在<queue>头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容...

【高级篇】C++中的sort函数详解

【高级篇】C++中的sort函数详解

0.简介sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#...