目录
零、写在前面
一、主要知识点
1.最简分数
二、课后习题
1979. 找出数组的最大公约数
写在最后
零、写在前面
这个系列不经常更新,尝试去完善这部分的所有题解吧。
【第23题】给定 a 和 b,代表分数 a / b,求它的最简分数https://blog.csdn.net/WhereIsHeroFrom/article/details/118272863
https://blog.csdn.net/WhereIsHeroFrom/article/details/118272863
一、主要知识点
1.最简分数
有了昨天的最大公约数,求最简分数其实就是求分子分母的最大公约数,然后除掉就好了。
#include <stdio.h> int gcd(int a, int b) {//辗转除 求最大公约数 return !b ? a : gcd(b, a % b); } int main() { int a, b; while(scanf("%d %d", &a, &b) != EOF) { int g = gcd(a, b); printf("%d/%d\n", a/g, b/g); //求最简分数 } return 0; }
二、课后习题
1979. 找出数组的最大公约数
1979. 找出数组的最大公约数
https://leetcode-cn.com/problems/find-greatest-common-divisor-of-array/
题目描述
给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。
两个数的 最大公约数 是能够被两个数整除的最大正整数。
思路
先找到最大最小值,然后求最大公约数就好了。不是,,,这是昨天的题啊-.-
int GCD(int a,int b){//辗转相除 return b ? GCD(b,a%b) : a; } int findGCD(int* nums, int numsSize){ int max = nums[0], min = nums[0] ;//最大最小 for(int i = 1; i < numsSize; i++){ if(max < nums[i]) max = nums[i]; if(min > nums[i]) min = nums[i]; } return GCD(max,min); }