Program to count number of distinct Squares and Cubes upto N

• Difficulty Level : Easy
• Last Updated : 24 Mar, 2021

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
Numbers that are perfect Square or perfect Cube
1, 4, 8, 9, 16, 25, 27, 36, 49, 64
Input: N = 25
Output: 6
Numbers that are perfect Square or perfect Cube
1, 4, 8, 9, 16, 25

A Naive approach is to check all numbers from 1 to N, if it is a square or cube.
Below is the implementation of above approach:

C++

 // C++ implementation of above approach#include #include // For sqrt() and cbrt()using namespace std; // Function to check if the// number is a perfect squarebool isSquare(int num){    int root = sqrt(num);    return (root * root) == num;} // Function to check if the// number is a perfect cubebool isCube(int num){    int root = cbrt(num);    return (root * root * root) == num;} // Function to count the number// of perfect squares and cubesint countSC(int N){    int count = 0;    for (int i = 1; i <= N; i++) {         // If a number is perfect square,        if (isSquare(i))            count++;         // Else if the number is cube or not        else if (isCube(i))            count++;    }     return count;} // Driver codeint main(){    int N = 20;     cout<< "Number of squares and cubes is " << countSC(N);    return 0;}

Java

 // Java implementation of// above approachclass GFG{ // Function to check if the// number is a perfect squarestatic boolean isSquare(int num){    int root = (int)Math.sqrt(num);    return (root * root) == num;} // Function to check if the// number is a perfect cubestatic boolean isCube(int num){    int root = (int)Math.cbrt(num);    return (root * root *            root) == num;} // Function to count the number// of perfect squares and cubesstatic int countSC(int N){    int count = 0;    for (int i = 1; i <= N; i++)    {         // If a number is perfect        // square,        if (isSquare(i))            count++;         // Else if the number is        // cube or not        else if (isCube(i))            count++;    }     return count;} // Driver codepublic static void main(String[] args){    int N = 20;     System.out.println("Number of squares " +                            "and cubes is " +                                 countSC(N));}} // This code is contributed// by ChitraNayal

Python3

 # Python 3 implementation of# above approach # Function to check if the# number is a perfect squaredef isSquare(num) :    root = int(num ** (1 / 2))     return (root * root) == num # Function to check if the# number is a perfect cubedef isCube(num) :    root = int(num ** (1 / 3))    return (root * root * root ) == num # Function to count the number# of perfect squares and cubesdef countSC(N) :    count = 0    for i in range(1, N + 1) :         # If a number is perfect square,        if isSquare(i) :            count += 1                     # Else if the number is cube        elif isCube(i) :            count += 1                 return count # Driver codeif __name__ == "__main__" :     N = 20     print("Number of squares and cubes is ",                                 countSC(N))             # This code is contributed by ANKITRAI1

C#

 // C# implementation of// above approachusing System; class GFG{ // Function to check if the// number is a perfect squarestatic bool isSquare(int num){    int root = (int)Math.Sqrt(num);    return (root * root) == num;} // Function to check if the// number is a perfect cubestatic bool isCube(int num){    int root = (int)Math.Pow(num,                    (1.0 / 3.0));    return (root * root * root) == num;} // Function to count the number// of perfect squares and cubesstatic int countSC(int N){    int count = 0;    for (int i = 1; i <= N; i++)    {         // If a number is perfect        // square,        if (isSquare(i))            count++;         // Else if the number is        // cube or not        else if (isCube(i))            count++;    }     return count;} // Driver codepublic static void Main(){    int N = 20;     Console.Write("Number of squares and " +                  "cubes is " + countSC(N));}} // This code is contributed// by ChitraNayal



Javascript


Output:
Number of squares and cubes is 5

Efficient Approach:

1. Number of squares from 1 to N is floor(sqrt(N)).
2. Number of cubes from 1 to N is floor(cbrt(N)).
3. 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++

 // C++ implementation of above approach#include #include // For sqrt() and cbrt()using namespace std; // Function to count the number// of perfect squares and cubesint countSC(int N){    int res = (int)sqrt(N) + (int)cbrt(N)              - (int)(sqrt(cbrt(N)));     return res;} // Driver codeint main(){    int N = 20;     cout << "Number of squares and cubes is " << countSC(N);    return 0;}

Java

 // Java implementation of// above approachclass GFG{ // Function to count the number// of perfect squares and cubesstatic int countSC(int N){    int res = (int)Math.sqrt(N) +              (int)Math.cbrt(N) -              (int)(Math.sqrt(Math.cbrt(N)));     return res;} // Driver codepublic static void main(String[] args){    int N = 20;     System.out.println("Number of squares " +                            "and cubes is " +                                 countSC(N));}} // This code is contributed// by ChitraNayal

Python3

 # Python implementation of# above approachimport math # for sqrt() # Function to count the number# of perfect squares and cubesdef countSC(N):    res = (int(math.sqrt(N)) +           int(N ** (1 / 3)) -           int(math.sqrt(N ** (1 / 3))))     return res # Driver codeN = 20print("Number of squares and cubes is",                            countSC(N)) # This code is contributed# by vaibhav29498

C#

 //C# implementation of// above approachusing System;public class GFG {     // Function to count the number    // of perfect squares and cubes    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;    }     // Driver code    public static void Main()    {        int N = 20;         Console.Write("Number of squares " + "and cubes is " +                countSC(N));    }}  /*This code is contributed by 29AjayKumar*/



Javascript


Output:
Number of squares and cubes is 5

My Personal Notes arrow_drop_up