文章目录
- 每日一言
- 题目
- 解题思路
- 法一:
- 法二:
- 代码
- 法一:
- 法二:
- 结语
每日一言
懒惰行动得如此缓慢,贫穷很快就能超过它。——富兰克林
题目
题目链接:公因子的数目
给你两个正整数 a 和 b ,返回 a 和 b 的 公 因子的数目。
如果 x 可以同时整除 a 和 b ,则认为 x 是 a 和 b 的一个 公因子 。
-
示例 1:
输入:a = 12, b = 6
输出:4
解释:12 和 6 的公因子是 1、2、3、6 。 -
示例 2:
输入:a = 25, b = 30
输出:2
解释:25 和 30 的公因子是 1、5 。
提示:
1 <= a, b <= 1000
解题思路
法一:
暴力解法,两数的最大公因子一定小于等于他们中最小的数,
接下来只要从1~a(假设它最小)遍历每一个数字,寻找满足条件的数,让计数变量加一,最后返回计数变量
法二:
先计算两数的最大公约数m,m的公因子个数就是两数的公因子个数
代码
法一:
int commonFactors(int a, int b) {int count = 0;//计数int i = a<b?a:b;//while(i>=1){if(a%i == 0 && b%i == 0)count++;i--;}return count;
}
法二:
//计算最大公约数
int gcd(int x,int y)
{//递归return y==0?x:gcd(y,x%y);
}int commonFactors(int a, int b) {int m = gcd(a,b);//求最大公约数int count = 0;//计数int i = 0;for(i=1;i*i<=m;i++){//i是m的因子,i就是两数的公因子if(m%i==0){count++;//如果i*i!=m,则m/i(与i不相等)//也可以做m的因子if(i*i!=m)count++;}}return count;
}
结语
请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!
都看到这里啦!真棒(*^▽^*)
可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家
编程小白写作,如有纰漏或错误,欢迎指正