问题描述
我编写了以下程序,该程序从命令行获取两个数字并返回这些数字的 gcd。
#include <stdio.h>
int to_int(char *input)
{
return *input - '0';
}
int main(int argc,char *argv[])
{
if (argc < 2) return 1;
int a = to_int(argv[1]);
int b = to_int(argv[2]);
int i;
int result;
for (i = 1; i <= a && i <= b; i++) {
if (a%i==0 && b%i==0) {
result = i;
}
}
printf("%d\n",result);
return 0;
}
然而,当我给它数字 4 和 16 时,它返回答案 1。这是不正确的。 4 和 16 的 gcd 是 4。但是我找不到我的代码有什么问题。我在互联网上找到的其他示例似乎使用了我正在使用的相同算法(测试两个数字是否可以被 i 整除,如果它们是,则 gcd 是 i)。
有人能指出我代码中的错误吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)