How to resolve the algorithm Stern-Brocot sequence step by step in the Nim programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Stern-Brocot sequence step by step in the Nim programming language

Table of Contents

Problem Statement

For this task, the Stern-Brocot sequence is to be generated by an algorithm similar to that employed in generating the Fibonacci sequence.

Show your output on this page.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Stern-Brocot sequence step by step in the Nim programming language

Source code in the nim programming language

import math, strformat, strutils

iterator sternBrocot(): (int, int) =
  ## Yield index and value of the terms of the sequence.
  var sequence: seq[int]
  sequence.add 1
  sequence.add 1
  var index = 1
  yield (1, 1)
  yield (2, 1)
  while true:
    sequence.add sequence[index] + sequence[index - 1]
    yield (sequence.len, sequence[^1])
    sequence.add sequence[index]
    yield (sequence.len, sequence[^1])
    inc index

# Fiind first 15 terms.
var res: seq[int]
for i, n in sternBrocot():
  res.add n
  if i == 15: break
echo "First 15 terms: ", res.join(" ")
echo()

# Find indexes for 1..10.
var indexes: array[1..10, int]
var toFind = 10
for i, n in sternBrocot():
  if n in 1..10 and indexes[n] == 0:
    indexes[n] = i
    dec toFind
    if toFind == 0: break
for n in 1..10:
  echo &"Index of first occurrence of number {n:3}: {indexes[n]:4}"

# Find index for 100.
var index: int
for i, n in sternBrocot():
  if n == 100:
    index = i
    break
echo &"Index of first occurrence of number 100: {index:4}"
echo()

# Check GCD.
var prev = 1
index = 1
for i, n in sternBrocot():
  if gcd(prev, n) != 1: break
  prev = n
  inc index
  if index > 1000: break
if index <= 1000:
  echo "Found two successive terms at index: ", index
else:
  echo "All consecutive terms up to the 1000th member have a GCD equal to one."


  

You may also check:How to resolve the algorithm Multiple distinct objects step by step in the Elixir programming language
You may also check:How to resolve the algorithm Empty program step by step in the CoffeeScript programming language
You may also check:How to resolve the algorithm Semordnilap step by step in the REXX programming language
You may also check:How to resolve the algorithm Averages/Pythagorean means step by step in the Stata programming language
You may also check:How to resolve the algorithm Loops/Infinite step by step in the TI-83 BASIC programming language