สมมติมี 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