c语言经典题算法1--用辗转相除法求两个数的最大公约数

题目: 用辗转相除法求两个数的最大公约数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, b,r;

    scanf("%d %d", &a, &b);
    while (b != 0)//当其中一个数为0,另一个数就是两数的最大公约数
    {
        r = a%b;
        a = b;
        b = r;
    }
    printf("最大公约数%d\n", a);
    system("pause");
}

辗转相除法:
目的:求两个整数的最大公约数
最大公约数:能同时被两个整数整除的最大公约数
原理:
最大公约数 = 小数 与 (大数%小数) 的最大公约数

利用这条原理,反复执行,直到   大数%小数 = 0,此时较小的数就是原来两数的最大公约数

例子:
105 252
252 % 105 = 42;
105 % 42 = 21;
42 % 21 = 0;
——即21为105与252的最大公约数
这种算法比起用接连的数不断循环找出最大公约数,会节省很多步骤,可以大大加快代码的执行速度

使用软件:vs2013
运行结果:
这里写图片描述

  • 21
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值