四种算法求最大公约数

这篇博客探讨了四种不同的算法来计算两个正整数的最大公约数,包括辗转相除法、穷举法、更相减损法以及Stein算法。文章详细介绍了每种算法的原理,并提供了C++代码实现。同时,强调了在程序设计中添加异常处理模块的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

四种算法求最大公约数(C++)

一.
实验目的

  1. 明确算法的概念和特点。

  2. 通过对问题的分析,设计合理的算法解决问题;

二.
实验内容

运行最大公约数的常用算法,并进行程序的调式与测试,要求程序设计风格良好,并添加异常处理模块(如输入非法等)。

三. 算法及流程图

1.辗转相除法

辗转相除法(又名欧几里德法)C语言中用于计算两个正整数a,b的最大公约数和最小公倍数,实质它依赖于下面的定理: gcd(a,b)=gcd(b,a mod b),(b!=0)。

2.穷举法

穷举法(也叫枚举法)求两个正整数的最大公约数的解题步骤:从两个数中较小数开始由大到小列举,直到找到公约数立即中断列举,得到的公约数便是最大公约数 。

3.更相减损法

第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。

第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。

则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。

  1. Stein算法

两个数均为偶数时有公约数2,且公约数一定为偶数。一个奇数一个偶数时,因为其奇偶性的不同,所以其最大公约数一定为奇数。当两个数均为奇数时,其最大公约数一定是奇数。
1.辗转相除法
在这里插入图片描述
2.穷举法
在这里插入图片描述
3.更相减损法
在这里插入图片描述
4.stein算法
在这里插入图片描述
四.代码

#include <iostream>  
#include <ctime>  
#include <math.h>  
using namespace std;  
//辗转相除法求最大公约数  
int gcd1(int a, int b)  
 {
   
         
    int temp, t;     
    if (a < b)     
     {
   
           
       t = a;         
       a = b;          
       b = t;      
     }      
     while (b != 0)     
     {
   
           
        temp = a % b;       
        a = b;          
        b = temp;      
     }      
      return a;                         //返回最大公约数  
  }  
//穷举法求最大公约数  
int gycd2(int a, int b)           
{
   
       
    int temp ;      
    temp = (a > b) ? b : a;      
    while (temp > 0)     
     {
   
            
      if (a 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值