这些用于检查完美平方的算法有什么区别?

问题描述 投票:-1回答:1

我正在解决一个问题,必须确定给定的数字是否是斐波那契数。

它涉及到一个步骤,我们必须检查5 * n * n-4或5 * n * n + 4(n是给定的数字)是否是一个完美的正方形。如果这些术语中的任何一个或两者都是完美的平方,则为斐波那契数,否则为非。

我使用以下语句检查一个完美的正方形。

bool isPerfectSquare(long long num){
   long long x = sqrt(num);
   return (x*x==num);
}

但是此方法显示了4个测试用例的错误答案。

而当我使用此(以下)方法时,它通过了所有测试用例。

bool isPerfectSquare(long long num){
   long long x = sqrt(num);
   if(x%1==0)
      return true;
   else
      return false;
}

上述两种方法在找到一个完美的平方之间有什么区别?

它还会影响程序的时间复杂度吗?

c++ fibonacci perfect-square
1个回答
0
投票

long long将自动将您的数字四舍五入,这就是为什么它在某些测试中失败,并尝试将sqrt存储为double或long double的原因

© www.soinside.com 2019 - 2024. All rights reserved.