📜  程序打印非平方数

📅  最后修改于: 2021-05-04 09:31:37             🧑  作者: Mango

编写程序以打印第一个n个非平方数(非完美平方)。
例子 :

Input : 5
Output : 2 3 5 6 7

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

天真的方法是遍历从1到n的所有数字。对于每个数字,请检查其是否为正整数。如果不是理想的正方形,请打印它。

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


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


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


输出 :

2 3 5 6 7 8 10 11 12 13

我们可以通过使用以下公式来改进上述算法
F(n)= n +楼板面积(1/2 + sqrt(n))
通过应用此函数,我们得到第n个非平方数。
公式的来源和证明:Quora
下面是上述方法的实现。

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


Java脚本


输出:

2 3 5 6 7 8 10 11 12 13

一种解决方案基于以下事实:两个正方形之间的非正方形数始终是偶数。
两个连续数字k和k + 1之间的非平方数的计数为
=(k + 1) 2 – k 2 +1
= 2k
1-4、4-9、9-16,…之间的非平方数分别为2、4、6,…。这些是偶数。
下面是上述方法的实现。

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


输出:

2 3 5 6 7 8 10 11 12 13