C语言 求两个数的公约数
求两个数的公约数,# 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)求解
# 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;
}
是求最大公约数吗还是所有公约数你试试这个代码 你这个if判断是个什么逻辑?两个余数相等?是不是该都为0 本帖最后由 liuzhengyuan 于 2020-4-21 20:08 编辑
感觉你这个思路不对
可以百度了解一下 “辗转相除法”,这是一个很不错的求最大公约数的方法 二楼的回答应该就是你想要的了
页:
[1]