Monday, October 7, 2024
Google search engine
HomeData Modelling & AICheck whether two numbers are in golden ratio

Check whether two numbers are in golden ratio

Given two numbers A and B, the task is to check that A and B are in the golden ratio.
Golden Ratio: Two numbers are said to be in the golden ratio if their ratio is the same as the ratio of the sum of the two numbers to the larger number. Here a > b > 0, Below is the geometric representation of the Golden ratio: 

\frac{A+B}{A} = \frac{A}{B} = \varphi = \frac{1+ \sqrt{5}}{2} = 1.618

Examples:  

Input: A = 1, B = 0.618
Output: Yes
Explanation:
These two numbers together forms Golden ratio

\frac{A}{B} = \frac{A + B}{A} = \frac{1.618}{1} = 1.618

Input: A = 61.77, B = 38.22

Output Yes

Explanation:

These two numbers together forms Golden ratio

\frac{A}{B} = \frac{A + B}{A} = \frac{99.99}{61.77} = 1.618

Approach: The idea is to find two ratios and check that this ratio is equal to the Golden ratio. That is 1.618.  

// Here A denotes the larger number

\frac{A}{B} = \frac{A + B}{A} = 1.618
 

Below is the implementation of the above approach:

C++




// C++ implementation to check 
// whether two numbers are in 
// golden ratio with each other
#include <bits/stdc++.h>
using namespace std;
 
// Function to check that two 
// numbers are in golden ratio
bool checkGoldenRatio(float a,
                      float b)
{
  // Swapping the numbers such 
  // that A contains the maximum
  // number between these numbers
  if(a <= b)
  {
    float temp = a;
    a = b;
    b = temp;
  }
 
  // First Ratio
  std::stringstream ratio1;
  ratio1 << std :: fixed <<
            std :: setprecision(3) <<
            (a / b);
 
  // Second Ratio
  std::stringstream ratio2;
  ratio2 << std :: fixed <<
            std :: setprecision(3) <<
            (a + b) / a;
 
  // Condition to check that two
  // numbers are in golden ratio
  if((ratio1.str() == ratio2.str()) &&
      ratio1.str() == "1.618")
  {
    cout << "Yes" << endl;
    return true;
  }
  else
  {
    cout << "No" << endl;
    return false;
  }
}
  
// Driver code
int main()
{
  float a = 0.618;
  float b = 1;
 
  // Function Call
  checkGoldenRatio(a, b);
 
  return 0;
}
 
// This code is contributed by divyeshrabadiya07


Java




// Java implementation to check 
// whether two numbers are in 
// golden ratio with each other
class GFG{
     
// Function to check that two 
// numbers are in golden ratio
public static Boolean checkGoldenRatio(float a,
                                       float b)
{
     
    // Swapping the numbers such 
    // that A contains the maximum
    // number between these numbers
    if (a <= b)
    {
        float temp = a;
        a = b;
        b = temp;
    }
     
    // First Ratio
    String ratio1 = String.format("%.3f", a / b);
     
    // Second Ratio
    String ratio2 = String.format("%.3f", (a + b) / a);
     
    // Condition to check that two
    // numbers are in golden ratio
    if (ratio1.equals(ratio2) &&
        ratio1.equals("1.618"))
    {
        System.out.println("Yes");
        return true;
    }
    else
    {
        System.out.println("No");  
        return false;
    }
}
 
// Driver code
public static void main(String []args)
{
    float a = (float)0.618;
    float b = 1;
     
    // Function Call
    checkGoldenRatio(a, b);
}
}
 
// This code is contributed by rag2127


Python3




# Python3 implementation to check
# whether two numbers are in
# golden ratio with each other
 
# Function to check that two
# numbers are in golden ratio
def checkGoldenRatio(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((a+b)/a, 3)
    # Condition to check that two
    # numbers are in golden ratio
    if ratio1 == ratio2 and\
       ratio1 == 1.618:
        print("Yes")
        return True
    else:
        print("No")
        return False
         
# Driver Code
if __name__ == "__main__":
    a = 0.618
    b = 1
     
    # Function Call
    checkGoldenRatio(a, b)


C#




// C# implementation to check 
// whether two numbers are in 
// golden ratio with each other
using System;
using System.Collections.Generic;
class GFG {
     
    // Function to check that two 
    // numbers are in golden ratio
    static bool checkGoldenRatio(float a,
                          float b)
    {
      // Swapping the numbers such 
      // that A contains the maximum
      // number between these numbers
      if(a <= b)
      {
        float temp = a;
        a = b;
        b = temp;
      }
      
      // First Ratio
      string ratio1 = String.Format("{0:0.000}", a / b);
      
      // Second Ratio
      string ratio2 = String.Format("{0:0.000}", (a + b) / a);
 
      // Condition to check that two
      // numbers are in golden ratio
      if(ratio1 == ratio2 && ratio1 == "1.618")
      {
        Console.WriteLine("Yes");
        return true;
      }
      else
      {
        Console.WriteLine("No");
        return false;
      }
    }
   
  // Driver code 
  static void Main() {
      float a = (float)0.618;
      float b = 1;
      
      // Function Call
      checkGoldenRatio(a, b);
  }
}
 
// This code is contributed by divyesh072019


Javascript




<script>
 
// Javascript implementation to check
// whether two numbers are in
// golden ratio with each other
 
// Function to check that two
// numbers are in golden ratio
function checkGoldenRatio(a, b)
{
      
    // Swapping the numbers such
    // that A contains the maximum
    // number between these numbers
    if (a <= b)
    {
        let temp = a;
        a = b;
        b = temp;
    }
      
    // First Ratio
    let ratio1 = (a / b).toFixed(3);
      
    // Second Ratio
    let ratio2 = ((a + b) / a).toFixed(3);
      
    // Condition to check that two
    // numbers are in golden ratio
    if ((ratio1 == ratio2) &&
        ratio1 == "1.618")
    {
        document.write("Yes");
        return true;
    }
    else
    {
        document.write("No"); 
        return false;
    }
}
 
// Driver Code
     
    let a = 0.618;
    let b = 1;
      
    // Function Call
    checkGoldenRatio(a, b);
 
</script>


Output: 

Yes

 

Time Complexity: O(1)
Auxiliary Space: O(1)

References: https://en.wikipedia.org/wiki/Golden_ratio 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments