鱼C论坛

 找回密码
 立即注册
查看: 968|回复: 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
  1. # include<stdio.h>
  2. int main()
  3. {
  4.         int a, b, c, d;
  5.         scanf("%d %d",&a, &b);
  6.         int n, m, max=1;
  7.         for(n=1; n<a; n++)
  8.         {
  9.                 for(m=1; m<b; m++)
  10.                 {
  11.                         if(a%n==0&&b%m==0&&m==n)//箭号
  12.                         {
  13.                             max = m;
  14.                         }
  15.                 }
  16.         }
  17.         printf("%d\n", max);
  18.         return 0;
  19. }
复制代码

是求最大公约数吗还是所有公约数你试试这个代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-21 20:00:11 | 显示全部楼层    本楼为最佳答案   
  1. # include<stdio.h>
  2. int main()
  3. {
  4.         int a, b, c, d;
  5.         scanf("%d %d",&a, &b);
  6.         int n, m, max=1;
  7.         for(n=1; n<a; n++)
  8.         {
  9.                 for(m=1; m<b; m++)
  10.                 {
  11.                         if(a%n==0&&b%m==0&&m==n)//箭号
  12.                         {
  13.                             max = m;
  14.                         }
  15.                 }
  16.         }
  17.         printf("%d\n", max);
  18.         return 0;
  19. }
复制代码

是求最大公约数吗还是所有公约数你试试这个代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-21 20:05:12 | 显示全部楼层
你这个if判断是个什么逻辑?两个余数相等?是不是该都为0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

感觉你这个思路不对
可以百度了解一下 “辗转相除法”,这是一个很不错的求最大公约数的方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-21 20:08:44 From FishC Mobile | 显示全部楼层
二楼的回答应该就是你想要的了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 15:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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