📜  检查两个数字是否在白银比例中

📅  最后修改于: 2021-04-27 23:45:37             🧑  作者: Mango

给定两个数字AB ,任务是检查A和B的银比。

例子:

方法:想法是找到两个比率并检查它们是否等于银比率(2.414)。

//这里A代表较大的数字\frac{A}{B} = \frac{2*A + B}{A} = 2.414

下面是上述方法的实现:

C++
// C++ implementation to check
// whether two numbers are in
// silver ratio with each other
#include
using namespace std;
 
// Function to check that two
// numbers are in silver ratio
bool checksilverRatio(float a, float b)
{
     
    // Swapping the numbers such
    // that A contains the maximum
    // number between these numbers
    if(a < b)
        swap(a, b);
     
    // First Ratio
    float ratio1 = ((a / b) * 1000.0) / 1000.0;
     
    // Second Ratio
    float ratio2 = (int)(((2 * a + b) /
                          a) * 1000);
    ratio2 = ratio2 / 1000;
     
    // Condition to check that two
    // numbers are in silver ratio
    if (ratio1 == ratio2 &&
       (int)(ratio1 - 2.414) == 0)
    {
        cout << "Yes\n";
        return true;
    }
    else
    {
        cout << "No\n";
        return false;
    }
}
 
// Driver Code
int main()
{
    float a = 2.414;
    float b = 1;
     
    // Function call
    checksilverRatio(a, b);
}
 
// This code is contributed by ishayadav181


Java
// Java implementation to check
// whether two numbers are in
// silver ratio with each other
import java.util.*;
import java.lang.*;
 
class GFG{
 
// Function to check that two
// numbers are in silver ratio
static boolean checksilverRatio(double a,
                                double b)
{
 
    // Swapping the numbers such
    // that A contains the maximum
    // number between these numbers
    if (a < b)
    {
        a = a + b;
        b = a - b;
        a = a - b;
    }
 
    // First Ratio
    double ratio1 = ((a / b) * 1000) / 1000;
 
    // Second Ratio
    double ratio2 = (int)(((2 * a + b) /
                           a) * 1000);
    ratio2 = ratio2 / 1000;
 
    // Condition to check that two
    // numbers are in silver ratio
    if (ratio1 == ratio2 &&
       (int)(ratio1 - 2.414) == 0)
    {
        System.out.println("Yes");
        return true;
    }
    else
    {
        System.out.println("No");
        return false;
    }
}
 
// Driver Code
public static void main(String[] args)
{
    double a = 2.414;
    double b = 1;
 
    // Function call
    checksilverRatio(a, b);
}
}
 
// This code is contributed by jana_sayantan


Python3
# Python3 implementation to check
# whether two numbers are in
# silver ratio with each other
 
# Function to check that two
# numbers are in silver ratio
def checksilverRatio(a, b):
     
    # Swapping the numbers such
    # that A contains the maximum
    # number between these numbers
    a, b = max(a, b), min(a, b)
     
    # First Ratio
    ratio1 = round(a / b, 3)
     
    # Second Ratio
    ratio2 = round((2 * a + b)/a, 3)
    # Condition to check that two
    # numbers are in silver ratio
    if ratio1 == ratio2 and\
       ratio1 == 2.414:
        print("Yes")
        return True
    else:
        print("No")
        return False
         
# Driver Code
if __name__ == "__main__":
    a = 2.414
    b = 1
     
    # Function Call
    checksilverRatio(a, b)


C#
// C# implementation to check
// whether two numbers are in
// silver ratio with each other
using System;
 
class GFG{
 
// Function to check that two
// numbers are in silver ratio
static bool checksilverRatio(double a,
                             double b)
{
 
    // Swapping the numbers such
    // that A contains the maximum
    // number between these numbers
    if (a < b)
    {
        a = a + b;
        b = a - b;
        a = a - b;
    }
 
    // First Ratio
    double ratio1 = ((a / b) * 1000) / 1000;
 
    // Second Ratio
    double ratio2 = (int)(((2 * a + b) /
                        a) * 1000);
    ratio2 = ratio2 / 1000;
 
    // Condition to check that two
    // numbers are in silver ratio
    if (ratio1 == ratio2 &&
       (int)(ratio1 - 2.414) == 0)
    {
        Console.WriteLine("Yes");
        return true;
    }
    else
    {
        Console.WriteLine("No");
        return false;
    }
}
 
// Driver Code
public static void Main()
{
    double a = 2.414;
    double b = 1;
 
    // Function call
    checksilverRatio(a, b);
}
}
 
// This code is contributed by sanjoy_62


Javascript


输出:
Yes

参考: https : //en.wikipedia.org/wiki/Silver_ratio