鱼C论坛

 找回密码
 立即注册
查看: 764|回复: 4

[已解决]C语言 求两个数的公约数

[复制链接]
发表于 2020-4-21 19:45:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求两个数的公约数,
# include<stdio.h>
int main()
{
        int a, b, c, d;
        scanf("%d %d",&a, &b);
        int n, m, max=1;
        for(n=0; n<a; n++)
        {
                for(m=0; m<b; m++)
                {
                        if(a%n==b%m)//箭号
                        {
                                d = a % n;
                                if(max<d)
                                {
                                        max = d;
                                }
                        }
                       
                }
        }
        printf("%d\n", max);
        return 0;
}
编译正常,但运行无法得出正确结果,尝试调试到箭号出跳出cpu窗口,显示=> 0x0000000000401534 <+68>:        idivl  -0x4(%rbp)  求解
最佳答案
2020-4-21 20:00:11
# include<stdio.h>
int main()
{
        int a, b, c, d;
        scanf("%d %d",&a, &b);
        int n, m, max=1;
        for(n=1; n<a; n++)
        {
                for(m=1; m<b; m++)
                {
                        if(a%n==0&&b%m==0&&m==n)//箭号
                        {
                            max = m;
                        }
                }
        }
        printf("%d\n", max);
        return 0;
}
是求最大公约数吗还是所有公约数你试试这个代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-21 20:00:11 | 显示全部楼层    本楼为最佳答案   
# include<stdio.h>
int main()
{
        int a, b, c, d;
        scanf("%d %d",&a, &b);
        int n, m, max=1;
        for(n=1; n<a; n++)
        {
                for(m=1; m<b; m++)
                {
                        if(a%n==0&&b%m==0&&m==n)//箭号
                        {
                            max = m;
                        }
                }
        }
        printf("%d\n", max);
        return 0;
}
是求最大公约数吗还是所有公约数你试试这个代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-21 20:05:12 | 显示全部楼层
你这个if判断是个什么逻辑?两个余数相等?是不是该都为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-21 20:06:26 | 显示全部楼层
本帖最后由 liuzhengyuan 于 2020-4-21 20:08 编辑

感觉你这个思路不对
可以百度了解一下 “辗转相除法”,这是一个很不错的求最大公约数的方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-21 20:08:44 From FishC Mobile | 显示全部楼层
二楼的回答应该就是你想要的了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 18:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表