Program to print non square numbers

Write a program to print first n non-square number (non perfect square) .

Examples :

Input : 5
Output : 2 3 5 6 7

Input : 10
Output : 2 3 5 6 7 8 10 11 12 13

A naive method is to traverse all numbers from 1 to n. For every number, check if it is perfect square or not. If not a perfect square, print it.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to print first n
// non-square numbers.
#include <bits/stdc++.h>
using namespace std;
  
// Function to check perfect square
bool isPerfectSquare(int n)
{
    if (n < 0)
        return false;
  
    int root = round(sqrt(n)));
    return n == root * root;
}
  
// function to print all
// non square number
void printnonsquare(int n)
{
    // variable which stores the
    // count
    int count = 0;
    for (int i = 1; count < n; ++i) {
  
        // not perfect square
        if (!isPerfectSquare(i)) {
            cout << i << " ";
            count++;
        }
    }
}
int main()
{
    int n = 10;
    printnonsquare(n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to print first n
// non-square numbers.
import java.io.*;
import java.math.*;
  
class GFG {
      
    // Function to check perfect square
    static boolean isPerfectSquare(int n)
    {
       if (n < 0)
          return false;
      
       int root = Math.round((int)(Math.sqrt(n)));
       return n == root * root;
    }
      
    // function to print all
    // non square number
    static void printnonsquare(int n)
    {
        // variable which stores the
        // count
        int count = 0;
        for (int i = 1; count < n; ++i) {
      
            // not perfect square
            if (!isPerfectSquare(i)) {
      
                System.out.print(i + " ");
                count++;
            }
        }
    }
      
    // Driver code
    public static void main(String args[])
    {
        int n = 10;
        printnonsquare(n);
    }
}
  
  
/* This code is contributed by Nikita Tiwari.*/

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 program to print 
# first n non-square numbers.
import math
  
# Function to check perfect 
# square
def isPerfectSquare(n) :
      
    if (n < 0) :
        return False
  
    root = round(math.sqrt(n))
      
    return (n == root * root)
  
# function to print all
# non square number
def printnonsquare(n) :
      
    # variable which stores the
    # count
    count = 0
    i = 1
      
    while(count < n) :
      
        # Not perfect square
        if (isPerfectSquare(i)== False) :
            print(i, end =" ")
            count = count + 1
  
        i = i + 1
  
n = 10
printnonsquare(n)
  
# This code is contributed by Nikita Tiwari.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to print first n 
// non-square numbers. 
using System;
  
class GFG
{
// Function to check perfect square 
static bool isPerfectSquare(int n) 
if (n < 0) 
    return false
  
double root = Math.Round((double )(Math.Sqrt(n))); 
return n == root * root; 
  
// function to print all 
// non square number 
static void printnonsquare(int n) 
    // variable which stores the 
    // count 
    int count = 0; 
    for (int i = 1; count < n; ++i) 
    
  
        // not perfect square 
        if (!isPerfectSquare(i)) 
        
            Console.Write(i + " "); 
            count++; 
        
    
  
// Driver code 
  
static public void Main ()
{
    int n = 10; 
    printnonsquare(n);
}
}
  
// This code is contributed by jit_t

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// CPP program to print first
// n non-square numbers.
  
// Function to check 
// perfect square
function isPerfectSquare($n)
{
    if ($n < 0)
        return false;
  
    $root = round(sqrt($n));
    return $n == $root * $root;
}
  
// function to print all
// non square number
function printnonsquare($n)
{
    // variable which 
    // stores the count
    $count = 0;
    for ($i = 1; $count < $n; ++$i
    {
  
        // not perfect square
        if (!isPerfectSquare($i)) 
        {
            echo $i ." ";
            $count++;
        }
    }
}
  
// Driver Code
$n = 10;
printnonsquare($n);
  
// This code is contributed by mits.
?>

chevron_right


Output :

2 3 5 6 7 8 10 11 12 13

We can improve the above algorithm by using below formula
F(n) = n + floor(1/2 + sqrt(n))
By applying this function we get nth non square number.

Source and proof of the formula : Quora

Below is the implementation of above approach .

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to print first n
// non square number
#include <bits/stdc++.h>
  
// Returns n-th non-square number.
int nonsquare(int n)
{
    return n + (int)(0.5 + sqrt(n));
}
  
void printNonSquare(int n)
{
    // loop to print non squares
    // below n
    for (int i = 1; i <= n; i++)
        printf("%d ", nonsquare(i));
}
  
int main()
{
    int n = 10;
    printNonSquare(n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to print first n
// non-square numbers.
import java.io.*;
import java.math.*;
  
class GFG {
      
    // Returns n-th non-square number.
    static int nonsquare(int n)
    {
        return n + (int)(0.5 + (Math.sqrt(n)));
    }
  
    static void printNonSquare(int n)
    {
        // loop to print non squares
        // below n
        for (int i = 1; i <= n; i++)
            System.out.print(nonsquare(i)+" ");
    }
  
    // Driver code
    public static void main(String args[])
    {
        int n = 10;
        printNonSquare(n);
    }
}
  
  
/* This code is contributed by Nikita Tiwari.*/

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 program to print
# first n non-square numbers.
import math
  
# Returns n-th non-square 
# number.
def nonsquare(n) :
      
    return n + (int)(0.5 + math.sqrt(n))
  
def printNonSquare(n) :
      
    # loop to print non
    # squares below n
    for i in range(1, n + 1) :
        print(nonsquare(i), end = " ")
  
n = 10
printNonSquare(n)
      
# This code is contributed by Nikita Tiwari.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to print first n
// non-square numbers.
using System;
  
class GFG
{
      
    // Returns n-th non-square number.
    static int nonsquare(int n)
    {
        return n + (int)(0.5 + (Math.Sqrt(n)));
    }
  
    static void printNonSquare(int n)
    {
        // loop to print non squares
        // below n
        for (int i = 1; i <= n; i++)
            Console.Write(nonsquare(i)+" ");
    }
  
    // Driver code
    public static void Main()
    {
        int n = 10;
        printNonSquare(n);
    }
}
  
  
// This code is contributed 
// by Akanksha Rai(Abby_akku)

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to print first n 
// non square number
  
// Returns n-th non-square number.
function nonsquare($n)
{
    return $n + (int)(0.5 + sqrt($n));
}
  
function printNonSquare($n)
{
    // loop to print non squares
    // below n
    for ($i = 1; $i <= $n; $i++)
        printf(nonsquare($i) . " ");
}
  
// Driver Code
$n = 10;
printNonSquare($n);
  
// This code is contributed by mits
?>

chevron_right



Output:

2 3 5 6 7 8 10 11 12 13

An alternate solution is based on the fact that number of non-squares between two squares is always an even number.
Count of non-square numbers between two consecutive numbers k and k+1 is
= (k+1)2 – k2 + 1
= 2k

Count of non-squares between 1-4, 4-9, 9-16, … are 2, 4, 6, … respectively. Theses are even numbers.

Below is the implementation of the above approach.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to print first n
// non square number
#include <assert.h>
#include <math.h>
#include <stdio.h>
  
void printNonSquare(int n)
{
    int curr_count = 2, num = 2, count = 0;
    while (count < n) {
  
        // Print curr_count numbers. curr_count
        // is current gap between two square numbers.
        for (int i = 0; i < curr_count &&
                        count < n; i++) {
            printf("%d ", num);
            count++;
            num++;
        }
  
        // skip a square number.
        num++;
  
        // Count of next non-square numbers
        // is next even number.
        curr_count += 2;
    }
}
  
int main()
{
    int n = 10;
    printNonSquare(n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to print first n
// non-square numbers.
import java.io.*;
import java.math.*;
  
class GFG {
      
    static void printNonSquare(int n)
    {
        int curr_count = 2, num = 2, count = 0;
        while (count < n) {
      
            // Print curr_count numbers. curr_count is
            //  current gap between two square numbers.
            for (int i = 0; i < curr_count &&
                                count < n; i++) {
                                  
                System.out.print( num+" ");
                  
                count++;
                num++;
            }
      
            // skip a square number.
            num++;
      
            // Count of next non-square 
            // numbers is next even number.
            curr_count += 2;
        }
    }
  
    // Driver code
    public static void main(String args[])
    {
        int n = 10;
        printNonSquare(n);
    }
}
  
  
/* This code is contributed by Nikita Tiwari.*/

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 program to print
# first n non-square numbers.
import math
  
# Returns n-th non-square 
# number.
def printNonSquare(n) :
  
    curr_count = 2
    num = 2
    count = 0
  
    while (count < n) :
          
        # Print curr_count numbers. 
        # curr_count is current gap
        # between two square numbers.
        i = 0
          
        while(i < curr_count and count < n) :
              
            print(num, end = " ")
            count = count + 1
            num = num + 1
            i = i + 1
              
        # skip a square number.
        num = num + 1
  
        # Count of next non-square 
        # numbers is next even number.
        curr_count = curr_count + 2
  
n = 10
printNonSquare(n)
      
# This code is contributed by Nikita Tiwari.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to print 
// first n non-square 
// numbers.
using System;
  
class GFG
{
static void printNonSquare(int n)
{
    int curr_count = 2, 
        num = 2, count = 0;
    while (count < n)
    {
  
        // Print curr_count 
        // numbers. curr_count 
        // is current gap between 
        // two square numbers.
        for (int i = 0; i < curr_count &&
                            count < n; i++) 
        {
            Console.Write(num + " ");
              
            count++;
            num++;
        }
  
        // skip a square number.
        num++;
  
        // Count of next 
        // non-square numbers
        // is next even number.
        curr_count += 2;
    }
}
  
// Driver code
static public void Main ()
{
    int n = 10;
    printNonSquare(n);
}
}
  
// This code is contributed 
// by akt_mit

chevron_right


PHP


Output:

2 3 5 6 7 8 10 11 12 13


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.