Check if a number is perfect square
The problem we are trying to solve is to determine whether a given number is a perfect square or not. A perfect square is a number that can be expressed as the square of an integer. For example, 9, 16, and 25 are perfect squares since they can be expressed as 3^2, 4^2, and 5^2, respectively.
Approach
To check if a number is a perfect square, we can use a simple algorithm that involves iterating through numbers starting from 1 and checking if the square of the current number equals the given number. We can stop iterating once we reach the number divided by 2, as there won't be any perfect squares greater than half of the number.
Pseudocode:
function isPerfectSquare(number):
status = 0
i = 1
while i <= number/2 and i*i <= number:
if i*i == number:
status = 1
break
i = i + 1
if status == 0:
print number, "is not a perfect square"
else:
print number, "is a perfect square of", i
Explanation with Example
Let's understand the algorithm with an example. Suppose we want to check if the number 16 is a perfect square.
1. Initialize the status variable to 0.
2. Start iterating from 1 to the number divided by 2, i.e., from 1 to 8.
3. In the first iteration, i = 1. Check if 1^2 equals 16. Since it is not, continue to the next iteration.
4. In the second iteration, i = 2. Check if 2^2 equals 16. Since it is not, continue to the next iteration.
5. In the third iteration, i = 3. Check if 3^2 equals 16. Since it is not, continue to the next iteration.
6. In the fourth iteration, i = 4. Check if 4^2 equals 16. Since it is true, set the status variable to 1 and break out of the loop.
7. Check the status variable. Since it is 1, print "16 is a perfect square of 4."
This process can be repeated for other numbers as well.
Code Solution
Here given code implementation process.
//C Program
//Check if a number is perfect square
#include <stdio.h>
void perfect_square(int number) {
//Use to check perfect square
int status = 0;
int i = 1;
for (i; i <= number / 2 && i *i <= number; ++i) {
if (i *i == number) {
//When number is perfect square
status = 1;
break;
}
}
if (status == 0) {
printf("%d Is not a perfect square \n", number);
} else {
printf("%d Is an perfect square of %d \n", number, i);
}
}
int main() {
//Test Case
perfect_square(16);
perfect_square(31);
perfect_square(81);
perfect_square(25);
return 0;
}
Output
16 Is an perfect square of 4
31 Is not a perfect square
81 Is an perfect square of 9
25 Is an perfect square of 5
/*
C++ Program
Check if a number is perfect square
*/
#include<iostream>
using namespace std;
class MyNumber {
public:
void perfect_square(int number) {
//Use to check perfect square
int status = 0;
int i = 1;
for (i = 1; i <= number / 2 && i *i <= number; ++i) {
if (i *i == number) {
//When number is perfect square
status = 1;
break;
}
}
if (status == 0) {
cout << number << " Is not a perfect square \n";
} else {
cout << number << " Is an perfect square of " << i << "\n";
}
}
};
int main() {
MyNumber obj;
//Test case
obj.perfect_square(16);
obj.perfect_square(31);
obj.perfect_square(81);
obj.perfect_square(25);
return 0;
}
Output
16 Is an perfect square of 4
31 Is not a perfect square
81 Is an perfect square of 9
25 Is an perfect square of 5
/*
Java Program
Check if a number is perfect square
*/
public class MyNumber {
void perfect_square(int number) {
//Use to check perfect square
int status = 0;
int i = 1;
for (i=1; i <= number / 2 && i *i <= number; ++i) {
if (i*i == number) {
//When number is perfect square
status = 1;
break;
}
}
if (status == 0) {
System.out.print(number+" Is not a perfect square \n");
} else {
System.out.print(number+" Is an perfect square of "+ i+"\n");
}
}
public static void main(String[] args) {
MyNumber obj = new MyNumber();
//Test case
obj.perfect_square(16);
obj.perfect_square(31);
obj.perfect_square(81);
obj.perfect_square(25);
}
}
Output
16 Is an perfect square of 4
31 Is not a perfect square
81 Is an perfect square of 9
25 Is an perfect square of 5
/*
C# Program
Check if a number is perfect square
*/
using System;
public class MyNumber {
void perfect_square(int number) {
//Use to check perfect square
int status = 0;
int i = 1;
for (i = 1; i <= number / 2 && i * i <= number; ++i) {
if (i * i == number) {
//When number is perfect square
status = 1;
break;
}
}
if (status == 0) {
Console.Write(number + " Is not a perfect square \n");
} else {
Console.Write(number + " Is an perfect square of " + i + "\n");
}
}
public static void Main(String[] args) {
MyNumber obj = new MyNumber();
//Test case
obj.perfect_square(16);
obj.perfect_square(31);
obj.perfect_square(81);
obj.perfect_square(25);
}
}
Output
16 Is an perfect square of 4
31 Is not a perfect square
81 Is an perfect square of 9
25 Is an perfect square of 5
# Python 3 Program
# Check if a number is perfect square
class MyNumber :
def perfect_square(self, number) :
status = 0
i = 1
while (i <= number / 2 and i * i <= number) :
if (i * i == number) :
#When number is perfect square
status = 1
break
i += 1
if (status == 0) :
print(number ," Is not a perfect square ")
else :
print(number ," Is an perfect square of ", i )
def main() :
obj = MyNumber()
obj.perfect_square(16)
obj.perfect_square(31)
obj.perfect_square(81)
obj.perfect_square(25)
if __name__ == "__main__":
main()
Output
16 Is an perfect square of 4
31 Is not a perfect square
81 Is an perfect square of 9
25 Is an perfect square of 5
# Ruby Program
# Check if a number is perfect square
class MyNumber
def perfect_square(number)
status = 0
i = 1
while (i <= number / 2 and i * i <= number)
if (i * i == number)
#When number is perfect square
status = 1
break
end
i += 1
end
if (status == 0)
print(number ," Is not a perfect square \n")
else
print(number ," Is an perfect square of ", i ,"\n")
end
end
end
def main()
obj = MyNumber.new()
obj.perfect_square(16)
obj.perfect_square(31)
obj.perfect_square(81)
obj.perfect_square(25)
end
main()
Output
16 Is an perfect square of 4
31 Is not a perfect square
81 Is an perfect square of 9
25 Is an perfect square of 5
/*
Scala Program
Check if a number is perfect square
*/
import scala.util.control.Breaks._
class MyNumber {
def perfect_square(number: Int): Unit = {
var status: Boolean = false;
var i: Int = 1;
breakable {
while (i <= number / 2 && i *i <= number) {
if (i *i == number) {
//When number is perfect square
status = true;
break;
}
i += 1;
}
}
if (status == false) {
print(s"$number Is not a perfect square \n");
} else {
print(s"$number Is an perfect square of " + i + "\n");
}
}
}
object Main {
def main(args: Array[String]): Unit = {
var obj: MyNumber = new MyNumber();
obj.perfect_square(16);
obj.perfect_square(31);
obj.perfect_square(81);
obj.perfect_square(25);
}
}
Output
16 Is an perfect square of 4
31 Is not a perfect square
81 Is an perfect square of 9
25 Is an perfect square of 5
/*
Swift 4 Program
Check if a number is perfect square
*/
class MyNumber {
func perfect_square(_ number: Int) {
var status: Int = 0;
var i: Int = 1;
while (i <= number / 2 && i * i <= number) {
if (i * i == number) {
//When number is perfect square
status = 1;
break;
}
i += 1;
}
if (status == 0) {
print(number ," Is not a perfect square");
} else {
print(number ," Is an perfect square of ", i );
}
}
}
func main() {
let obj: MyNumber = MyNumber();
obj.perfect_square(16);
obj.perfect_square(31);
obj.perfect_square(81);
obj.perfect_square(25);
}
main();
Output
16 Is an perfect square of 4
31 Is not a perfect square
81 Is an perfect square of 9
25 Is an perfect square of 5
<?php
/*
Php Program
Check if a number is perfect square
*/
class MyNumber {
function perfect_square($number) {
//Use to check perfect square
$status = 0;
$i = 1;
for ($i = 1; $i <= $number / 2 && $i *$i <= $number; ++$i) {
if ($i *$i == $number) {
//When number is perfect square
$status = 1;
break;
}
}
if ($status == 0) {
echo($number ." Is not a perfect square \n");
} else {
echo($number ." Is an perfect square of ". $i ."\n");
}
}
};
function main() {
$obj = new MyNumber();
//Test case
$obj->perfect_square(16);
$obj->perfect_square(31);
$obj->perfect_square(81);
$obj->perfect_square(25);
}
main();
Output
16 Is an perfect square of 4
31 Is not a perfect square
81 Is an perfect square of 9
25 Is an perfect square of 5
/*
Node Js Program
Check if a number is perfect square
*/
class MyNumber {
perfect_square(number) {
//Use to check perfect square
var status = 0;
var i = 1;
for (i = 1; i <= parseInt(number / 2) && i *i <= number; ++i) {
if (i *i == number) {
//When number is perfect square
status = 1;
break;
}
}
if (status == 0) {
process.stdout.write(number + " Is not a perfect square \n");
} else {
process.stdout.write(number + " Is an perfect square of " + i + "\n");
}
}
}
function main() {
var obj = new MyNumber();
//Test case
obj.perfect_square(16);
obj.perfect_square(31);
obj.perfect_square(81);
obj.perfect_square(25)
}
main();
Output
16 Is an perfect square of 4
31 Is not a perfect square
81 Is an perfect square of 9
25 Is an perfect square of 5
Time Complexity
The time complexity of this algorithm is O(n/2) in the worst case, where n is the given number. This is because we iterate from 1 to n/2, checking if each number is a perfect square. In the best case, if the given number is a perfect square on the first iteration, the time complexity would be O(1).
Output Explanation
Let's examine the output of the provided code:
16 is a perfect square of 4 31 is not a perfect square 81 is a perfect square of 9 25 is a perfect square of 5
The code checks if each given number is a perfect square using the algorithm we discussed. It correctly identifies that 16, 81, and 25 are perfect squares and provides the corresponding square roots (4, 9, and 5) as output. For the number 31, the code determines that it is not a perfect square.
Overall, the code successfully checks whether a given number is a perfect square or not.
Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.
New Comment