C++求最大公约数四种方法解析

 更新时间:2020年09月17日 14:06:59   作者:时光zz  
这篇文章主要为大家详细介绍了C++求最大公约数四种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

C++求最大公约数的四种方法思路,供大家参考,具体内容如下

将最近学的求最大公约数的四种方法总结如下:

第一种:穷举法之一

解释:拿其中一个数出来,用一个临时变量(tem)保存,每次都把那两个数除以这个临时变量。如果能除断,直接返回tem;如果不能除断,tem- -,直到都能除断,再返回tem。tem就是它们的最大公约数。

#include <iostream>
using namespace std;
int CommFactor1(int m, int n); //函数的声明
int main()
{
 int a, b;
 cin >> a >> b;
 cout << "这两个数的最大公约数为:" << CommFactor1(a,b)<< endl;
 return 0;
}
int CommFactor1(int m,int n)
{
 int tem;
 for (tem = m;; tem--)
 {
 if (m % tem == 0 && n % tem == 0)
 {
  break;
 }
 }
 return tem;
}

第二种:穷举法之二

解释:求出两数的所有公因子,再把公因子累乘得到最大公约数。

#include <iostream>
using namespace std;
int CommFactor2(int m, int n); //函数的声明
int main()
{
  int a, b;
  cin >> a >> b;
  cout << "这两个数的最大公约数为:" << CommFactor2(a,b)<< endl;
  return 0;
}
int CommFactor2(int m,int n)
{
  int i;
  int factor = 1;
  for (i=2;i<=m&&i<<n;i++)
  {
    while(m % i == 0 && n % i == 0)  //这里不能用if语句,因为可能会有重复的公因子
    {
      factor = factor * i;
      m = m / i;
      n = n / i;
    }
  }
  return factor;
}

第三种:辗转相除法

解释:将两个数辗转相除直到余数为0。(具体思想请问度娘)

#include <iostream>
using namespace std;
int CommFactor3(int m, int n); //函数的声明
int main()
{
 int a, b;
 cin >> a >> b;
 cout << "这两个数的最大公约数为:" << CommFactor2(a,b)<< endl;
 return 0;
}
int CommFactor3(int m,int n)
{
 int z = n;
 while (m % n != 0)
 {
 z = m % n;
 m = n;
 n = z;
 }
 return z;
}

第四种:辗转相减法

解释:将两个数辗转相减直到两数相等。(具体思想请问度娘)

#include <iostream>
using namespace std;
int CommFactor4(int m, int n); //函数的声明
int main()
{
 int a, b;
 cin >> a >> b;
 cout << "这两个数的最大公约数为:" << CommFactor4(a,b)<< endl;
 return 0;
}
int CommFactor4(int m,int n)
{
 
 while (m != n)
 {
 if (m > n)
 {
 m = m - n;
 }
 else
 {
 n = n - m;
 }
 }
 return m;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 一篇带你了解C语言--位操作详情

    一篇带你了解C语言--位操作详情

    这篇文章主要介绍了关于C语言位运算的简单示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • C语言实现的阶乘,排列和组合实例

    C语言实现的阶乘,排列和组合实例

    这篇文章主要介绍了C语言实现的阶乘,排列和组合的方法,涉及C语言数学运算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C/C++中关于字符串的常见函数操作大全

    C/C++中关于字符串的常见函数操作大全

    这篇文章主要介绍了C/C++中关于字符串的常见函数操作,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • C++中默认无参构造函数的工作机制浅析

    C++中默认无参构造函数的工作机制浅析

    构造函数主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用;析构函数主要作用在于对象销毁前系统自动调用,执行一些清理工作
    2023-02-02
  • C语言实现职工管理系统

    C语言实现职工管理系统

    这篇文章主要为大家详细介绍了C语言实现职工管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • C++右值引用与移动构造函数基础与应用详解

    C++右值引用与移动构造函数基础与应用详解

    左值和右值都是针对表达式,左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不再存在的临时对象,下面这篇文章主要给大家介绍了关于C++11右值引用和移动语义的相关资料,需要的朋友可以参考下
    2023-02-02
  • 一篇文章带你了解C++面向对象编程--继承

    一篇文章带你了解C++面向对象编程--继承

    这篇文章主要介绍了解析C++面对象编程--继承的运用,是C++入门学习中的基础知识,需要的朋友可以参考下,希望能够给你带来帮助
    2021-08-08
  • 详解C++ string字符串类

    详解C++ string字符串类

    这篇文章主要介绍了C++ string字符串类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 解析C/C++指针、函数、结构体、共用体

    解析C/C++指针、函数、结构体、共用体

    这篇文章主要介绍了C/C++指针、函数、结构体、共用体的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • C++条件及循环语句的综合运用实例

    C++条件及循环语句的综合运用实例

    这篇文章主要介绍了C++条件及循环语句的综合运用实例,能够帮助C++初学者更好地掌握C++的逻辑语句用法,需要的朋友可以参考下
    2015-09-09

最新评论