কোন সংখ্যাটিকে একটি নিখুঁত বর্গ সংখ্যা বলা হয় যদি সেই সংখ্যার বর্গমূল একটি পূর্ণসংখ্যা হয়৷ অন্য কথায়, যখন একটি বর্গমূল একটি পূর্ণ সংখ্যা হয়, তখন সংখ্যাটিকে একটি নিখুঁত বর্গ সংখ্যা বলা হয়।
আমরা সেই সংখ্যার বর্গমূল খুঁজে বের করে নিখুঁত বর্গ পরীক্ষা করতে পারি এবং সঠিক বর্গমূল পেতে i এর সাথে বার বার মেলাতে পারি। যখন বর্গমূল মান অতিক্রম করে, তখন এটি একটি নিখুঁত বর্গ সংখ্যা নয়।
কিন্তু এখানে প্রচেষ্টা কমাতে, আমরা বারবার বর্গমূল পরীক্ষা করিনি। যেহেতু আমরা জানি যে একটি নিখুঁত বর্গ সংখ্যার বর্গমূল হল একটি পূর্ণসংখ্যা, তাহলে আমরা একটি করে বর্গমূল বাড়াতে পারি এবং একটি নিখুঁত বর্গ মিলের জন্য পরীক্ষা করতে পারি।
ইনপুট এবং আউটপুট
Input: A number to check: 1032 Output: 1032 is not a perfect square number.
অ্যালগরিদম
isPerfectSquare(num)
ইনপুট: সংখ্যা।
আউটপুট: একটি সংখ্যা নিখুঁত বর্গ সংখ্যা হলে সত্য, এবং বর্গমূলও প্রিন্ট করুন।
Begin if num < 0, then exit sqRoot := 1 sq := sqRoot^2 while sq <= num, do if sq = num, then return sqRoot sqRoot := sqRoot + 1 sq := sqRoot^2 done otherwise return error End
উদাহরণ
#include<iostream> using namespace std; int isPerfectSquare(int num) { if(num < 0) return -1; //a -ve number is not a valid square term int sqRoot = 1, sq; while((sq =(sqRoot*sqRoot)) <= num) { //when square of square root is not crossed the number if(sq == num) return sqRoot; sqRoot++; //as square root of a perfect square is always integer } return -1; } int main() { int num, res; cout << "Enter a number to check whether it is perfect square or not: "; cin >> num; if((res = isPerfectSquare(num)) != -1) cout << num << " is a perfect square number, square root: " << res; else cout << num << " is not a perfect square number."; }
আউটপুট
Enter a number to check whether it is perfect square or not: 1032 1032 is not a perfect square number.