(38)找出数组的最大公约数

文章目录

  • 每日一言
  • 题目
  • 解题思路
  • 代码
  • 结语


每日一言

无论在什么样的社会里,一个人的理想,是为了多数人的利益,为了社会的进步,对社会生产力的发展起了促进作用,也就是说,合乎社会历史的发展规律,就是伟大的理想。——陶铸


题目

题目链接:找出数组的最大公约数

给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。

两个数的 最大公约数 是能够被两个数整除的最大正整数。

  • 示例 1:
    输入:nums = [2,5,6,9,10]
    输出:2
    解释:
    nums 中最小的数是 2
    nums 中最大的数是 10
    2 和 10 的最大公约数是 2

  • 示例 2:
    输入:nums = [7,5,6,8,3]
    输出:1
    解释:
    nums 中最小的数是 3
    nums 中最大的数是 8
    3 和 8 的最大公约数是 1

  • 示例 3:
    输入:nums = [3,3]
    输出:3
    解释:
    nums 中最小的数是 3
    nums 中最大的数是 3
    3 和 3 的最大公约数是 3

提示:

2 <= nums.length <= 1000
1 <= nums[i] <= 1000


解题思路

一步一步来,先找最大最小值,再求两数的最大公约数


代码

int findGCD(int* nums, int numsSize) {
    int min = nums[0];
    int max = nums[0];

    //找最大和最小值
    for(int i=1;i<numsSize;i++)
    {
        if(min > nums[i])
            min = nums[i];
        if(max < nums[i])
            max = nums[i];
    }

    //求最大公约数,辗转相除法
    int tmp = 0;
    while(tmp = max%min)
    {
        max = min;
        min = tmp;
    }

    return min;//返回最大公约数
}

结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


你可能感兴趣的:(你必须要会的C语言练习题,C语言,学习,c语言)