Open In App

Print first N terms of Lower Wythoff sequence

Given an integer N, the task is to print the first N terms of the Lower Wythoff sequence

Examples: 



Input: N = 5 
Output: 1, 3, 4, 6, 8

Input: N = 10 
Output: 1, 3, 4, 6, 8, 9, 11, 12, 14, 16 
 



Approach: Lower Wythoff sequence is a sequence whose nth term is a(n) = floor(n * phi) where phi = (1 + sqrt(5)) / 2. So, we run a loop and find the first n terms of the sequence.

Below is the implementation of the above approach:  




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the first n terms
// of the lower Wythoff sequence
void lowerWythoff(int n)
{
 
    // Calculate value of phi
    double phi = (1 + sqrt(5)) / 2.0;
 
    // Find the numbers
    for (int i = 1; i <= n; i++) {
 
        // a(n) = floor(n * phi)
        double ans = floor(i * phi);
 
        // Print the nth numbers
        cout << ans;
 
        if (i != n)
            cout << ", ";
    }
}
 
// Driver code
int main()
{
    int n = 5;
 
    lowerWythoff(n);
 
    return 0;
}




// Java implementation of the approach
class GFG
{
 
// Function to print the first n terms
// of the lower Wythoff sequence
static void lowerWythoff(int n)
{
 
    // Calculate value of phi
    double phi = (1 + Math.sqrt(5)) / 2.0;
 
    // Find the numbers
    for (int i = 1; i <= n; i++)
    {
 
        // a(n) = floor(n * phi)
        double ans = Math.floor(i * phi);
 
        // Print the nth numbers
        System.out.print((int)ans);
 
        if (i != n)
            System.out.print(" , ");
    }
}
 
// Driver code
public static void main(String[] args)
{
    int n = 5;
 
    lowerWythoff(n);
}
}
 
// This code is contributed by 29AjayKumar




# Python3 implementation of the approach
 
# from math import sqrt,floor
from math import sqrt, floor
 
# Function to print the first n terms
# of the lower Wythoff sequence
def lowerWythoff(n) :
 
    # Calculate value of phi
    phi = (1 + sqrt(5)) / 2;
 
    # Find the numbers
    for i in range(1, n + 1) :
 
        # a(n) = floor(n * phi)
        ans = floor(i * phi);
 
        # Print the nth numbers
        print(ans,end="");
 
        if (i != n) :
            print( ", ",end = "");
 
# Driver code
if __name__ == "__main__" :
 
    n = 5;
    lowerWythoff(n);
 
# This code is contributed by AnkitRai01




// C# implementation of the approach
using System;
 
class GFG
{
     
// Function to print the first n terms
// of the lower Wythoff sequence
static void lowerWythoff(int n)
{
 
    // Calculate value of phi
    double phi = (1 + Math.Sqrt(5)) / 2.0;
 
    // Find the numbers
    for (int i = 1; i <= n; i++)
    {
 
        // a(n) = floor(n * phi)
        double ans = Math.Floor(i * phi);
 
        // Print the nth numbers
        Console.Write((int)ans);
 
        if (i != n)
            Console.Write(" , ");
    }
}
 
// Driver code
static public void Main ()
{
    int n = 5;
 
    lowerWythoff(n);
}
}
 
// This code is contributed by ajit.




<script>
 
// Javascript implementation of above approach
 
// Function to print the first n terms
// of the lower Wythoff sequence
function lowerWythoff(n)
{
     
    // Calculate value of phi
    var phi = (1 + Math.sqrt(5)) / 2.0;
 
    // Find the numbers
    for(var i = 1; i <= n; i++)
    {
         
        // a(n) = floor(n * phi)
        var ans = Math.floor(i * phi);
 
        // Print the nth numbers
        document.write( ans);
 
        if (i != n)
            document.write(", ");
    }
}
 
// Driver code
var n = 5;
 
lowerWythoff(n);
 
// This code is contributed by SoumikMondal
 
</script>

Output: 
1, 3, 4, 6, 8

 

Time Complexity: O(n)

Auxiliary Space: O(1)


Article Tags :