【问题标题】:Greatest Common Factor最大公因数
【发布时间】:2015-11-18 21:13:10
【问题描述】:

所以我尝试为我刚开始学习 C++ 的朋友(我有一些 C++ 的基本知识)创建一个函数来查找 GCD(最大公约数)。所以这是我的代码:

int gcd(int var1, int var2){
    int result;
    if(var1<1 || var2<1){
        return 0; //means error
    } else {
        for(int i=0; i<=var1 && i<=var2; i++){
            if((var1%i) == 0 && (var2%i) == 0){
                result = i;
            }
        }
    }
    return result;
}

它已编译,但问题是 .exe 在尝试使用运算符“%”时停止工作。在这种情况下,在这行代码中:var1%ivar2%i。所以,我试着把代码稍微调整一下:

int gcd(int var1, int var2){
    int result;
    if(var1<1 || var2<1){
        result = 0; //means error
    } else {
        for(int i=var1; i>=1; i--){
            if((var1%i) == 0 && (var2%i) == 0){
                result = i;
                break;
            }
        }
    }
    return result;
}

而且它没有任何问题。所以,我想知道第一个代码有什么问题?

【问题讨论】:

  • 嗯,n % 0 看起来不像是可计算的东西,是吗?
  • 在代码中,你从 int i = 0;然后使用 var mod 0。结果未定义,因为它是除以零错误。
  • @Mr.Llama 因为我删除了那部分,.exe 工作正常
  • @Lao 是的...我想知道为什么我没有发现那个错误
  • @ShyamalDesai 是的,感谢您的回复。我是愚蠢的没有意识到哈哈

标签: c++ function greatest-common-divisor


【解决方案1】:

你不能 % by 0 因为它会产生一个被零除的异常。在第一个循环中,您需要从 1 而不是 0 开始 i。

【讨论】:

  • 啊...谢谢。现在请原谅我,因为我没有注意到那个愚蠢的错误而恢复了信心。但说真的,谢谢。我不知道为什么我没有意识到哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多