Stern-Brocot Sequence
Stern Brocot sequence is similar to Fibonacci sequence but it is different in the way fibonacci sequence is generated .
Generation of Stern Brocot sequence :
1. First and second element of the sequence is 1 and 1.
2. Consider the second member of the sequence . Then, sum the considered member of the sequence and it’s precedent i.e (1 + 1 = 2) . Now 2 is the next element of our series . Sequence will be [ 1, 1, 2 ]
3. After this element, our next element of the sequence will be the considered element of our second step. Now the sequence will be [ 1, 1, 2, 1 ]
4. Again we do the step 2, but now the considered element will be 2(3rd element ). So, next number of sequence will be sum of considered number and it’s precedent (2 + 1 = 3). Sequence will be now [ 1, 1, 2, 1, 3 ]
5. Like step 3, the next element will be the considered element i.e 2 . Thus sequence will be [ 1, 1, 2, 1, 3, 2 ]
6. Hence this process continues, now next considered element will be 1( 4th element ) .
Here is the simple program to print Stern Brocot sequence .
C++
// CPP program to print Brocot Sequence #include <bits/stdc++.h> using namespace std; void SternSequenceFunc(vector< int >& BrocotSequence, int n) { // loop to create sequence for ( int i = 1; BrocotSequence.size() < n; i++) { int considered_element = BrocotSequence[i]; int precedent = BrocotSequence[i - 1]; // adding sum of considered element and it's precedent BrocotSequence.push_back(considered_element + precedent); // adding next considered element BrocotSequence.push_back(considered_element); } // printing sequence.. for ( int i = 0; i < 15; ++i) cout << BrocotSequence[i] << " " ; } int main() { int n = 15; vector< int > BrocotSequence; // adding first two element // in the sequence BrocotSequence.push_back(1); BrocotSequence.push_back(1); SternSequenceFunc(BrocotSequence, n); return 0; } |
Java
// Java program to print // Brocot Sequence import java.io.*; import java.util.*; class GFG { static void SternSequenceFunc(Vector<Integer> BrocotSequence, int n) { // loop to create sequence for ( int i = 1 ; BrocotSequence.size() < n; i++) { int considered_element = BrocotSequence.get(i); int precedent = BrocotSequence.get(i- 1 ); // adding sum of considered element and it's precedent BrocotSequence.add(considered_element + precedent); // adding next considered element BrocotSequence.add(considered_element); } // printing sequence.. for ( int i = 0 ; i < 15 ; ++i) System.out.print(BrocotSequence.get(i) + " " ); } // Driver code public static void main (String[] args) { int n = 15 ; Vector<Integer> BrocotSequence = new Vector<Integer>(); // adding first two element // in the sequence BrocotSequence.add( 1 ); BrocotSequence.add( 1 ); SternSequenceFunc(BrocotSequence, n); } } // This code is contributed by Gitanjali. |
Python3
# Python program to print # Brocot Sequence import math def SternSequenceFunc(BrocotSequence, n): # loop to create sequence for i in range ( 1 , n): considered_element = BrocotSequence[i] precedent = BrocotSequence[i - 1 ] # adding sum of considered # element and it's precedent BrocotSequence.append(considered_element + precedent) # adding next considered element BrocotSequence.append(considered_element) # printing sequence.. for i in range ( 0 , 15 ): print (BrocotSequence[i] , end = " " ) # Driver code n = 15 BrocotSequence = [] # adding first two element # in the sequence BrocotSequence.append( 1 ) BrocotSequence.append( 1 ) SternSequenceFunc(BrocotSequence, n) # This code is contributed by Gitanjali. |
C#
// C# program to print // Brocot Sequence using System; using System.Collections.Generic; class GFG { static void SternSequenceFunc(List< int > BrocotSequence, int n) { // loop to create sequence for ( int i = 1; BrocotSequence.Count < n; i++) { int considered_element = BrocotSequence[i]; int precedent = BrocotSequence[i - 1]; // adding sum of considered // element and it's precedent BrocotSequence.Add(considered_element + precedent); // adding next // considered element BrocotSequence.Add( considered_element); } // printing sequence.. for ( int i = 0; i < 15; ++i) Console.Write( BrocotSequence[i] + " " ); } // Driver code static void Main () { int n = 15; List< int > BrocotSequence = new List< int >(); // adding first two element // in the sequence BrocotSequence.Add(1); BrocotSequence.Add(1); SternSequenceFunc(BrocotSequence, n); } } // This code is contributed by // Manish Shaw(manishshaw1) |
PHP
<?php // PHP program to // print Brocot Sequence function SternSequenceFunc(& $BrocotSequence , $n ) { // loop to create sequence for ( $i = 1; count ( $BrocotSequence ) < $n ; $i ++) { $considered_element = $BrocotSequence [ $i ]; $precedent = $BrocotSequence [ $i - 1]; // adding sum of considered // element and it's precedent array_push ( $BrocotSequence , $considered_element + $precedent ); // adding next // considered element array_push ( $BrocotSequence , $considered_element ); } // printing sequence.. for ( $i = 0; $i < 15; ++ $i ) echo ( $BrocotSequence [ $i ]. " " ); } // Driver code $n = 15; $BrocotSequence = array (); // adding first two element // in the sequence array_push ( $BrocotSequence , 1); array_push ( $BrocotSequence , 1); SternSequenceFunc( $BrocotSequence , $n ); // This code is contributed by // Manish Shaw(manishshaw1) ?> |
Javascript
<script> // Javascript program to print Brocot Sequence function SternSequenceFunc( BrocotSequence, n) { // loop to create sequence for ( var i = 1; BrocotSequence.length < n; i++) { var considered_element = BrocotSequence[i]; var precedent = BrocotSequence[i - 1]; // adding sum of considered element and it's precedent BrocotSequence.push(considered_element + precedent); // adding next considered element BrocotSequence.push(considered_element); } // printing sequence.. for ( var i = 0; i < 15; ++i) document.write( BrocotSequence[i] + " " ); } var n = 15; var BrocotSequence = []; // adding first two element // in the sequence BrocotSequence.push(1); BrocotSequence.push(1); SternSequenceFunc(BrocotSequence, n); // This code is contributed by rrrtnx. </script> |
Output:
1 1 2 1 3 2 3 1 4 3 5 2 5 3 4
References :
Github
Please Login to comment...