算法基础

问题1

求两个自然数的最大公约数

算法1 找两个数的公共因子目前看只能用蛮力发逐个尝试,可以用2~min{m,n}进行枚举尝试。短除法求最大公约数的伪代码描述如下。

输入:两个自然数m和n

输出:两个数的最大公约数

1.factor ==1;

2.循环变量i从2~min{m,n},执行下述操作;

     2.1如果i是m和n的公共因子,则执行下述操作;

      2.1.1  factor == factor * i;

      2.1.2 m = m/i;n = n/i;

     2.2 如果i不是m和n 的公因子,则i= i+1;

输出factor

求解算法的伪代码

int CommFactor(int m,int n){
      int i,factor =1;
      for(i =2;i<=m&&i<=n;i++){
             while(m%i==0&&n%i==0)
                {
                     factor = factor *i;
                     m=m/i;n=n/i; 
                 }
      }
    return factor;
}
下面我们介绍欧几里得算法

输入:两个自然数m和n;

输出:两个数的最大公约数;

1.r=m/n;

2.循环直到r等于0;

m=n;

n=r;

r = m%n;

3.输出n

int  CommFactor(int m ,int n){
       int r = m%n;
       while(r!=0)
      {
           m=n;
           n=r;
           r=m%n;
       }
    return n;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nihui123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值