编写程序以打印第一个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