📜  最接近的理想正方形及其距离

📅  最后修改于: 2021-04-29 11:26:10             🧑  作者: Mango

给定一个正整数N 。任务是找到最接近N的理想平方数以及从N达到该数所需的步骤。

注意:N最接近的完美平方可以小于,等于或大于N ,步长是指N与最接近的完美平方之间的差。

例子:

方法:

  • 如果N是一个完美的正方形,则打印N并将步长设置为0
  • 否则,找到第一个完美的平方数> N并记下与N的差。
  • 然后,找到第一个完美平方数并记下与N的差。
  • 并打印出一个完美的正方形,从而得到这两个差异中的最小值,并将差异作为最小步长。

下面是上述方法的实现:

C++
// CPP program to find the closest perfect square
// taking minimum steps to reach from a number
  
#include
using namespace std;
  
  
    // Function to check if a number is
    // perfect square or not
    bool isPerfect(int N)
    {
        if ((sqrt(N) - floor(sqrt(N))) != 0)
            return false;
        return true;
    }
  
    // Function to find the closest perfect square
    // taking minimum steps to reach from a number
    void getClosestPerfectSquare(int N)
    {
        if (isPerfect(N))
        {
            cout< diff2)
            cout<


Java
// Java program to find the closest perfect square
// taking minimum steps to reach from a number
  
class GFG {
  
    // Function to check if a number is
    // perfect square or not
    static boolean isPerfect(int N)
    {
        if ((Math.sqrt(N) - Math.floor(Math.sqrt(N))) != 0)
            return false;
        return true;
    }
  
    // Function to find the closest perfect square
    // taking minimum steps to reach from a number
    static void getClosestPerfectSquare(int N)
    {
        if (isPerfect(N)) {
            System.out.println(N + " "
                               + "0");
            return;
        }
  
        // Variables to store first perfect
        // square number
        // above and below N
        int aboveN = -1, belowN = -1;
        int n1;
  
        // Finding first perfect square
        // number greater than N
        n1 = N + 1;
        while (true) {
            if (isPerfect(n1)) {
                aboveN = n1;
                break;
            }
            else
                n1++;
        }
  
        // Finding first perfect square
        // number less than N
        n1 = N - 1;
        while (true) {
            if (isPerfect(n1)) {
                belowN = n1;
                break;
            }
            else
                n1--;
        }
  
        // Variables to store the differences
        int diff1 = aboveN - N;
        int diff2 = N - belowN;
  
        if (diff1 > diff2)
            System.out.println(belowN + " " + diff2);
        else
            System.out.println(aboveN + " " + diff1);
    }
  
    // Driver code
    public static void main(String args[])
    {
        int N = 1500;
  
        getClosestPerfectSquare(N);
    }
}


Python3
# Python3 program to find the closest 
# perfect square taking minimum steps
# to reach from a number 
  
# Function to check if a number is 
# perfect square or not
from math import sqrt, floor 
def isPerfect(N):
    if (sqrt(N) - floor(sqrt(N)) != 0):
        return False
    return True
  
# Function to find the closest perfect square 
# taking minimum steps to reach from a number 
def getClosestPerfectSquare(N):
    if (isPerfect(N)): 
        print(N, "0") 
        return
  
    # Variables to store first perfect 
    # square number above and below N 
    aboveN = -1
    belowN = -1
    n1 = 0
  
    # Finding first perfect square 
    # number greater than N 
    n1 = N + 1
    while (True):
        if (isPerfect(n1)):
            aboveN = n1 
            break
        else:
            n1 += 1
  
    # Finding first perfect square 
    # number less than N 
    n1 = N - 1
    while (True): 
        if (isPerfect(n1)): 
            belowN = n1 
            break
        else:
            n1 -= 1
              
    # Variables to store the differences 
    diff1 = aboveN - N 
    diff2 = N - belowN 
  
    if (diff1 > diff2):
        print(belowN, diff2) 
    else:
        print(aboveN, diff1)
  
# Driver code 
N = 1500
getClosestPerfectSquare(N)
  
# This code is contributed 
# by sahishelangia


C#
// C# program to find the closest perfect square
// taking minimum steps to reach from a number
using System;
  
class GFG {
  
    // Function to check if a number is
    // perfect square or not
    static bool isPerfect(int N)
    {
        if ((Math.Sqrt(N) - Math.Floor(Math.Sqrt(N))) != 0)
            return false;
        return true;
    }
  
    // Function to find the closest perfect square
    // taking minimum steps to reach from a number
    static void getClosestPerfectSquare(int N)
    {
        if (isPerfect(N)) {
            Console.WriteLine(N + " "
                            + "0");
            return;
        }
  
        // Variables to store first perfect
        // square number
        // above and below N
        int aboveN = -1, belowN = -1;
        int n1;
  
        // Finding first perfect square
        // number greater than N
        n1 = N + 1;
        while (true) {
            if (isPerfect(n1)) {
                aboveN = n1;
                break;
            }
            else
                n1++;
        }
  
        // Finding first perfect square
        // number less than N
        n1 = N - 1;
        while (true) {
            if (isPerfect(n1)) {
                belowN = n1;
                break;
            }
            else
                n1--;
        }
  
        // Variables to store the differences
        int diff1 = aboveN - N;
        int diff2 = N - belowN;
  
        if (diff1 > diff2)
            Console.WriteLine(belowN + " " + diff2);
        else
            Console.WriteLine(aboveN + " " + diff1);
    }
  
    // Driver code
    public static void Main()
    {
        int N = 1500;
  
        getClosestPerfectSquare(N);
    }
}
// This code is contributed by anuj_67..


PHP
 $diff2)
        echo $belowN, " " , $diff2;
    else
        echo $aboveN, " ", $diff1;
}
  
// Driver code
$N = 1500;
getClosestPerfectSquare($N);
  
// This code is contributed by ajit.
?>


输出:
1521 21