C++ 判斷一個數是不是完全平方數


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM