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

ตรวจสอบว่าตัวเลขเป็นกำลังสองสมบูรณ์โดยไม่ค้นหารากที่สองใน C++ . หรือไม่


สมมุติว่าให้ตัวเลขมา เราต้องตรวจสอบว่าตัวเลขนั้นเป็นกำลังสองสมบูรณ์หรือไม่ เราจะไม่ใช้การดำเนินการสแควร์รูทเพื่อตรวจสอบ สมมติว่ามีตัวเลข 1024 นี่คือกำลังสองสมบูรณ์ แต่ 1,000 ไม่ใช่กำลังสองสมบูรณ์ ตรรกะง่าย ๆ เราต้องทำตามอัลกอริธึมนี้เพื่อให้ได้ผลลัพธ์

อัลกอริทึม

isPerfectSquare(n) −

อินพุต − หมายเลข n

ผลผลิต − จริง ถ้าตัวเลขเป็นกำลังสองสมบูรณ์ มิฉะนั้น เท็จ

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

ตัวอย่าง

#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