1、利用平方數的性質:
1=1,4=1+3,9=1+3+5,16=1+3+5+7以此類推,模仿它可以使用一個while循環,不斷減去一個從1開始不斷增大的奇數,若最終減成了0,說明是完全平方數,否則,不是。
bool isPerfectSquare(int num) { int num1 = 1; while(num > 0) { num -= num1; num1 += 2; } return num == 0; }
2、二分法查找
bool isPerfectSquare(int num) { if(num == 1) return true; int start = 2; int end = num; int mid; while(start <= end) { mid = start + (end - start)/2; if(mid == num / mid && num % mid == 0) return true; if(mid > num / mid) end = mid - 1; else start = mid + 1; } return false; }
————————————————
版權聲明:本文為CSDN博主「mikasoi」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/mikasoi/article/details/105036643