Skip to content
Related Articles
Program to print non square numbers
• Difficulty Level : Medium
• Last Updated : 03 May, 2021

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++

 `// CPP program to print first n``// non-square numbers.``#include ``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;``}`

## Java

 `// 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.*/`

## Python3

 `# 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.`

## C#

 `// 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`

## PHP

 ``

## Javascript

 ``

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++

 `// CPP program to print first n``// non square number``#include ` `// 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;``}`

## Java

 `// 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.*/`

## Python3

 `# 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.`

## C#

 `// 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)`

## PHP

 ``

## Javascript

 ``

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++

 `// CPP program to print first n``// non square number``#include ``#include ``#include ` `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;``}`

## Java

 `// 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.*/`

## Python3

 `# 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.`

## C#

 `// 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`

## PHP

 ``

## Javascript

 ``

Output:

`2 3 5 6 7 8 10 11 12 13`

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up