求解最大公约数(两种)

🌵🌵🌵前言

✨你好啊,我是“ 怪& ”,是一名在校大学生哦。
🌍主页链接:怪&的个人博客主页
☀️博文主更方向为:课程学习知识、作业题解、期末备考。随着专业的深入会越来越广哦…一起期待。
❤️一个“不想让我曾没有做好的也成为你的遗憾”的博主。
💪很高兴与你相遇,一起加油!

题目

输入两个整数 a 和 b,请你编写一个函数,int gcd(int a, int b), 计算并输出 a 和 b 的最大公约数。

  • 输入格式
    共一行,包含两个整数 a 和 b。

  • 输出格式
    共一行,包含一个整数,表示 a 和 b 的最大公约数。

  • 数据范围
    1≤a,b≤1000

  • 输入样例:
    12 16

  • 输出样例:
    4

解析

解法1:递归

思路

请添加图片描述

代码
#include <iostream>

using namespace std;

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

int main(){
    int a,b;
    cin>>a>>b;
    cout<<gcd(a,b);
    return 0;
}

解法2:

1、暴力从1开始除以,能整除以即得到最大公因数
#include <iostream>

using namespace std;

int gcd(int a, int b){
 
    int c=min(a,b);
    int d;
    for(int i=1;i<=c;i++){
        if(a%i==0 && b%i==0){
            d=i;  
        }
    }
    return d;
}

int main(){
    int a,b;
    cin>>a>>b;
    cout<<gcd(a,b);
    return 0;
}
2、从两者最小值开始除以,能整除即得到最大公因数
#include <iostream>

using namespace std;

int gcd(int a, int b){
 
    int c=min(a,b);
    int d;
    for(int i=c;i>=0;i--){
        if(a%i==0 && b%i==0){
            d=i;  
            break;
        }
    }
    return d;
}

int main(){
    int a,b;
    cin>>a>>b;
    cout<<gcd(a,b);
    return 0;
}

❤️❤️❤️忙碌的敲代码也不要忘了浪漫鸭!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

怪&

感谢您的支持

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

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

打赏作者

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

抵扣说明:

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

余额充值