1. 程式人生 > >如何判斷一個整數是不是完全平方數

如何判斷一個整數是不是完全平方數

bool isSqr(int n)
{
    int a = int(sqrt(n) + 0.5);
     return a * a == n;
}

bool isSqr(int n)
 {
     int a = (int)(sqrt(n) + 0.0001);
     return a * a == n;
 }
 bool isSqr(int n)
 {
     int a = (int)sqrt(n * 1.0);
     if(a*a == n || (a+1)*(a+1) == n || (a-1)*(a-1) == n)
         return true;
     return false;
 }
 bool

 isSqr(int n)
 {
     int a = (int)(sqrt(n * 1.0));
     return a * a == n;
 }

個人傾向於使用第一種寫法. 第二種和第一種其實差不多.
第三種, 需要判斷(a-1)*(a-1) == n 嗎? 我覺得不需要.
第四種, 基本上是錯誤的, 可能會漏掉某些完全平方數. 除非sqrt(n) >= n^0.5 恆成立.