(44)公因子的数目

文章目录


每日一言

懒惰行动得如此缓慢,贫穷很快就能超过它。------富兰克林


题目

题目链接:公因子的数目

给你两个正整数 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的公因子个数就是两数的公因子个数

代码

法一:

c 复制代码
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;
}

法二:

c 复制代码
//计算最大公约数
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;
}

结语

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


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

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

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


相关推荐
辣知13 分钟前
辣知·化智68 半仙隐士渭水钓的不是鱼
学习
程序猿编码14 分钟前
不用 PyTorch!纯 C 实现 N 维张量 + 反向传播,完成手写数字识别训练
c语言·人工智能·pytorch·神经网络·卷积神经网络·大模型推理
传奇开心果编程25 分钟前
【用案例学Material 3 Expressive】第1课:从一封邮件开始,感受安卓设计新语言的表现力
android·学习·ui·kotlin·android jetpack
sunoo-22929 分钟前
【嵌入式 ARM 学习第十二天】SPI 裸机驱动 + I2C 触摸屏驱动 + 三大串行协议深度对比
arm开发·笔记·vscode·学习·imx6ull
墨心@1 小时前
第 4 章《工具》学习总结
学习·自然语言处理·prompt·agent·harness
AOI小白新手上路1 小时前
4-1_地址空间_RISC与CISC_学习笔记
笔记·学习
Vcaker1 小时前
Linux学习36-k8s集群升级及kube-vip高可用
linux·运维·学习
probex_1 小时前
学习笔记:知识图谱落地实践
笔记·学习·知识图谱
AOI小白新手上路1 小时前
4-3_ARM汇编_学习笔记
汇编·arm开发·学习
kkkkkkkkkk_Z2 小时前
新手自学嵌入式 | 学习日记:ARM架构初探与基础概念梳理
arm开发·学习·架构