Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบ Perfect Square โดยไม่ใช้ Square Root ใน C++

สมมติมี Number ต้องการตรวจสอบว่าเป็น Perfect Square หรือไม่ โดยไม่ใช้ Square Root Operation ตัวอย่าง 1024 เป็น Perfect Square แต่ 1000 ไม่ใช่ ตรรกะง่ายๆ: ตรวจสอบ i จาก 1 ถึง i² ≤ n ถ้า n หาร i ลงตัว และ n/i = i แสดงว่าเป็น Perfect Square

อัลกอริทึม

isPerfectSquare(n)

Input - Number n

Output - true ถ้าเป็น Perfect Square มิฉะนั้น false

begin
    for i := 1, i² ≤ n, increase i by 1:
        if n divisible by i, and n / i = i, then
            return true
    done
    return false
end

ตัวอย่างโค้ด C++

#include <iostream>
using namespace std;

bool isPerfectSquare(int number) {
    for (int i = 1; i * i <= number; i++) {
        if ((number % i == 0) && (number / i == i)) {
            return true;
        }
    }
    return false;
}

int main() {
    int n = 1024;
    if(isPerfectSquare(n)) {
        cout << n << " is perfect square number";
    } else {
        cout << n << " is not a perfect square number";
    }
}

ผลลัพธ์

1024 is perfect square number