Open In App

Sylvester's sequence

Last Updated : 16 Feb, 2023
Comments
Improve
Suggest changes
2 Likes
Like
Report

In number system, Sylvester's sequence is an integer sequence in which each member of the sequence is the product of the previous members, plus one. Given a positive integer N. The task is to print the first N member of the sequence. 
Since numbers can be very big, use %10^9 + 7.
Examples: 
 

Input : N = 6
Output : 2 3 7 43 1807 3263443

Input : N = 2
Output : 2 3


 


The idea is to run a loop and take two variables and initialise them as 1 and 2, one to store the product till now and other to store the current number which is nothing but the first number + 1 and for each step multiply both using arithmetic modular operation i.e (a + b)%N = (a%N + b%N)%N where N is a modular number.
Below is the implementation of this approach: 
 

C++
// CPP program to print terms of Sylvester's sequence
#include <bits/stdc++.h>
using namespace std;
#define N 1000000007

void printSequence(int n)
{
    int a = 1; // To store the product.
    int ans = 2; // To store the current number.

    // Loop till n.
    for (int i = 1; i <= n; i++) {
        cout << ans << " ";
        ans = ((a % N) * (ans % N)) % N;
        a = ans;
        ans = (ans + 1) % N;
    }
}

// Driven Program
int main()
{
    int n = 6;
    printSequence(n);
    return 0;
}
Java
// JAVA Code for Sylvester sequence
import java.util.*;

class GFG {
    
    public static void printSequence(int n)
    {
        int a = 1; // To store the product.
        int ans = 2; // To store the current number.
        int N = 1000000007;
        
        // Loop till n.
        for (int i = 1; i <= n; i++) {
           System.out.print(ans + " ");
            ans = ((a % N) * (ans % N)) % N;
            a = ans;
            ans = (ans + 1) % N;
        }
    }

    /* Driver program to test above function */
    public static void main(String[] args) 
    {
        int n = 6;
        printSequence(n);
        
    }
}
  
// This code is contributed by Arnav Kr. Mandal.
Python
# Python Code for Sylvester sequence

def printSequence(n) :
    a = 1 # To store the product.
    ans = 2 # To store the current number.
    N = 1000000007
    
    # Loop till n.
    i = 1
    while i <= n :
        print ans,
        ans = ((a % N) * (ans % N)) % N
        a = ans
        ans = (ans + 1) % N
        i = i + 1
        

# Driver program to test above function 
n = 6
printSequence(n)

# This code is contributed by Nikita Tiwari.
C#
// C# Code for Sylvester sequence
using System;

class GFG {
    
    public static void printSequence(int n)
    {
         // To store the product.
        int a = 1;
        
        // To store the current number.
        int ans = 2; 
        
        int N = 1000000007;
        
        // Loop till n.
        for (int i = 1; i <= n; i++)
        {
            Console.Write(ans + " ");
            ans = ((a % N) * (ans % N)) % N;
            a = ans;
            ans = (ans + 1) % N;
        }
    }

    // Driver program 
    public static void Main() 
    {
        int n = 6;
        printSequence(n);
        
    }
}

// This code is contributed by vt_m.
PHP
<?php
// PHP program to print 
// terms of Sylvester's sequence

$N = 1000000007;

function printSequence($n)
{
    global $N;
    
    // To store 
    // the product.
    $a = 1; 
    
    // To store the
    // current number.
    $ans = 2; 

    // Loop till n.
    for ($i = 1; $i <= $n; $i++)
    {
        echo $ans ," ";
        $ans = (($a % $N) * ($ans % $N)) % $N;
        $a = $ans;
        $ans = ($ans + 1) % $N;
    }
}

    // Driver Code
    $n = 6;
    printSequence($n);
    
// This code is contributed by anuj_67.
?>
JavaScript
<script>
// Javascript program to print
// terms of Sylvester's sequence

let N = 1000000007;

function printSequence(n)
{

    // To store
    // the product.
    let a = 1;
    
    // To store the
    // current number.
    let ans = 2;

    // Loop till n.
    for (let i = 1; i <= n; i++)
    {
        document.write(ans + " ");
        ans = ((a % N) * (ans % N)) % N;
        a = ans;
        ans = (ans + 1) % N;
    }
}

    // Driver Code
    let n = 6;
    printSequence(n);
    
// This code is contributed by gfgking.
</script>

Output: 
 

2 3 7 43 1807 3263443

Time complexity : O(n) 
Auxiliary Space : O(1)


 


Explore