Here, we are going to execute a python program to discover the square and 3D shape of a given number by making capacities. Given a number, and we need to compose client characterized capacities to locate the square and 3D square of the number is Python. Example: Function to get square: Function
to get cube: Program: Output
View Discussion
Improve Article
Save Article
View Discussion
Improve Article
Save Article
Given a number N, the task is to find No. of perfect Squares and perfect Cubes from 1 to a given integer, N ( Both
Inclusive).
Note: Numbers which are both perfect Square and perfect Cube should be counted once.
Examples:
Input: N = 70
Output: 10
Explanation: Numbers that are perfect Square or perfect Cube
1, 4, 8, 9, 16, 25, 27, 36, 49, 64Input: N = 25
Output: 6
Explanation: Numbers that are perfect Square or perfect Cube
1, 4, 8, 9, 16, 25
Naive Approach:
Check all numbers from 1 to N, if it is a square or cube.
Below is the implementation of above approach:
C++
#include <iostream>
#include <math.h> // For sqrt() and cbrt()
using namespace std;
bool isSquare(int num)
{
int root = sqrt(num);
return (root * root) == num;
}
bool isCube(int num)
{
int root = cbrt(num);
return (root * root * root) == num;
}
int countSC(int N)
{
int count = 0;
for (int i = 1; i <= N; i++) {
if (isSquare(i))
count++;
else if (isCube(i))
count++;
}
return count;
}
int main()
{
int N = 20;
cout << "Number of squares and cubes is " << countSC(N);
return 0;
}
Java
class GFG {
static boolean isSquare(int num)
{
int root = (int)Math.sqrt(num);
return (root * root) == num;
}
static boolean isCube(int num)
{
int root = (int)Math.cbrt(num);
return (root * root * root) == num;
}
static int countSC(int N)
{
int count = 0;
for (int i = 1; i <= N; i++) {
if (isSquare(i))
count++;
else if (isCube(i))
count++;
}
return count;
}
public static void main(String[] args)
{
int N = 20;
System.out.println("Number of squares "
+ "and cubes is " + countSC(N));
}
}
Python3
def isSquare(num):
root = int(num ** (1 / 2))
return (root * root) == num
def isCube(num):
root = int(num ** (1 / 3))
return (root * root * root) == num
def countSC(N):
count = 0
for i in range(1, N + 1):
if isSquare(i):
count += 1
elif isCube(i):
count += 1
return count
if __name__ == "__main__":
N = 20
print("Number of squares and cubes is ",
countSC(N))
C#
using System;
class GFG {
static bool isSquare(int num)
{
int root = (int)Math.Sqrt(num);
return (root * root) == num;
}
static bool isCube(int num)
{
int root = (int)Math.Pow(num, (1.0 / 3.0));
return (root * root * root) == num;
}
static int countSC(int N)
{
int count = 0;
for (int i = 1; i <= N; i++) {
if (isSquare(i))
count++;
else if (isCube(i))
count++;
}
return count;
}
public static void Main()
{
int N = 20;
Console.Write("Number of squares and "
+ "cubes is " + countSC(N));
}
}
PHP
<?php
function isSquare($num)
{
$root = (int)sqrt($num);
return ($root * $root) == $num;
}
function isCube($num)
{
$root = (int)pow($num, 1 / 3);
return ($root * $root *
$root) == $num;
}
function countSC($N)
{
$count = 0;
for ($i = 1; $i <= $N; $i++)
{
if (isSquare($i))
$count++;
else if (isCube($i))
$count++;
}
return $count;
}
$N = 20;
echo "Number of squares and " .
"cubes is " . countSC($N);
?>
Javascript
<script>
function isSquare(num)
{
let root = parseInt(Math.sqrt(num), 10);
return (root * root) == num;
}
function isCube(num)
{
let root = parseInt(Math.cbrt(num), 10);
return (root * root * root) == num;
}
function countSC(N)
{
let count = 0;
for (let i = 1; i <= N; i++) {
if (isSquare(i))
count++;
else if (isCube(i))
count++;
}
return count;
}
let N = 20;
document.write("Number of squares and cubes is " + countSC(N));
</script>
Output
Number of squares and cubes is 5Time Complexity: O(N)
Space Complexity: O(1)
Efficient Approach:
- Number of squares from 1 to N is floor(sqrt(N)).
- Number of cubes from 1 to N is floor(cbrt(N)).
- Eliminate the numbers which are both square and cube ( like 1, 64…. ) by subtracting floor(sqrt(cbrt(N))) from it.
Below is the implementation of the above approach:
C++
#include <iostream>
#include <math.h> // For sqrt() and cbrt()
using namespace std;
int countSC(int N)
{
int res = (int)sqrt(N) + (int)cbrt(N)
- (int)(sqrt(cbrt(N)));
return res;
}
int main()
{
int N = 20;
cout << "Number of squares and cubes is " << countSC(N);
return 0;
}
Java
class GFG {
static int countSC(int N)
{
int res = (int)Math.sqrt(N) + (int)Math.cbrt(N)
- (int)(Math.sqrt(Math.cbrt(N)));
return res;
}
public static void main(String[] args)
{
int N = 20;
System.out.println("Number of squares "
+ "and cubes is " + countSC(N));
}
}
Python3
import math
def cr(N):
if pow(round(N ** (1 / 3)), 3) == N:
return round(N ** (1 / 3))
return int(N ** (1 / 3))
def countSC(N):
res = (int(math.sqrt(N)) +
int(cr(N)) -
int(math.sqrt(cr(N))))
return res
N = 20
print("Number of squares and cubes is",
countSC(N))
C#
using System;
public class GFG {
static int countSC(int N)
{
int res = (int)(Math.Sqrt(N)
+ Math.Ceiling(
Math.Pow(N, (double)1 / 3))
- (Math.Sqrt(Math.Ceiling(
Math.Pow(N, (double)1 / 3)))));
return res;
}
public static void Main()
{
int N = 20;
Console.Write("Number of squares "
+ "and cubes is " + countSC(N));
}
}
PHP
<?php
function countSC($N)
{
$res = sqrt($N) + pow($N, 1 / 3) -
(sqrt(pow($N, 1 / 3)));
return floor($res);
}
$N = 20;
echo "Number of squares and cubes is " ,
countSC($N);
?>
Javascript
<script>
function countSC(N)
{
let res = parseInt(Math.sqrt(N), 10) + parseInt(Math.cbrt(N), 10) - parseInt(Math.sqrt(parseInt(Math.cbrt(N), 10)), 10);
return res;
}
let N = 20;
document.write("Number of squares and cubes is " + countSC(N));
</script>
Output
Number of squares and cubes is 5Time Complexity: O(1)
Auxiliary Space: O(1)