Juggler Sequence
Juggler Sequence is a series of integer number in which the first term starts with a positive integer number a and the remaining terms are generated from the immediate previous term using the below recurrence relation :
Juggler Sequence starting with number 3:
3, 5, 11, 36, 6, 2, 1
Juggler Sequence starting with number 9:
9, 27, 140, 11, 36, 6, 2, 1
Given a number n we have to print the Juggler Sequence for this number as the first term of the sequence.
Examples:
Input: 9 Output: 9, 27, 140, 11, 36, 6, 2, 1 We start with 9 and use above formula to get next terms. Input: 6 Output: 6, 2, 1
// C++ implementation of Juggler Sequence
#include <bits/stdc++.h>
using namespace std;
// This function prints the juggler Sequence
void printJuggler(long long n)
{
long long a = n;
// print the first term
cout << a << " ";
// calculate terms until
// last term is not 1
while (a != 1)
{
long long b = 0;
// Check if previous term
// is even or odd
if (a % 2 == 0)
// calculate next term
b = floor(sqrt(a));
else
// for odd previous term
// calculate next term
b = floor(sqrt(a) *
sqrt(a) * sqrt(a));
cout << b << " ";
a = b;
}
}
// Driver Code
int main()
{
printJuggler(37);
cout <<"\n";
printJuggler(9);
return 0;
}
// This code is contributed by shubhamsingh10
// C implementation of Juggler Sequence
#include<stdio.h>
#include<math.h>
// This function prints the juggler Sequence
void printJuggler(int n)
{
int a = n;
// print the first term
printf("%d ", a);
// calculate terms until last term is not 1
while (a != 1)
{
int b = 0;
// Check if previous term is even or odd
if (a%2 == 0)
// calculate next term
b = floor(sqrt(a));
else
// for odd previous term calculate
// next term
b = floor(sqrt(a)*sqrt(a)*sqrt(a));
printf("%d ", b);
a = b;
}
}
//driver program to test above function
int main()
{
printJuggler(3);
printf("\n");
printJuggler(9);
return 0;
}
// Java implementation of Juggler Sequence
import java.io.*;
import java.math.*;
class GFG {
// This function prints the juggler Sequence
static void printJuggler(int n)
{
int a = n;
// print the first term
System.out.print(a+" ");
// calculate terms until last term is not 1
while (a != 1)
{
int b = 0;
// Check if previous term is even or odd
if (a%2 == 0)
// calculate next term
b = (int)Math.floor(Math.sqrt(a));
else
// for odd previous term calculate
// next term
b =(int) Math.floor(Math.sqrt(a) *
Math.sqrt(a) * Math.sqrt(a));
System.out.print( b+" ");
a = b;
}
}
// Driver program to test above function
public static void main (String[] args) {
printJuggler(3);
System.out.println();
printJuggler(9);
}
}
//This code is contributed by Nikita Tiwari.
import math
#This function prints the juggler Sequence
def printJuggler(n) :
a = n
# print the first term
print (a,end=" ")
# calculate terms until last term is not 1
while (a != 1) :
b = 0
# Check if previous term is even or odd
if (a%2 == 0) :
# calculate next term
b = (int)(math.floor(math.sqrt(a)))
else :
# for odd previous term calculate
# next term
b = (int) (math.floor(math.sqrt(a)*math.sqrt(a)*
math.sqrt(a)))
print (b,end=" ")
a = b
printJuggler(3)
print()
printJuggler(9)
# This code is contributed by Nikita Tiwari.
// C# implementation of Juggler Sequence
using System;
class GFG {
// This function prints the juggler Sequence
static void printJuggler(int n)
{
int a = n;
// print the first term
Console.Write(a+" ");
// calculate terms until last term is not 1
while (a != 1)
{
int b = 0;
// Check if previous term is even or odd
if (a%2 == 0)
// calculate next term
b = (int)Math.Floor(Math.Sqrt(a));
else
// for odd previous term calculate
// next term
b =(int) Math.Floor(Math.Sqrt(a) *
Math.Sqrt(a) * Math.Sqrt(a));
Console.Write( b+" ");
a = b;
}
}
// Driver Code
public static void Main () {
printJuggler(3);
Console.WriteLine();
printJuggler(9);
}
}
// This code is contributed by Nitin Mittal
<?php
// PHP implementation of
// Juggler Sequence
// function prints the
// juggler Sequence
function printJuggler($n)
{
$a = $n;
// print the first term
echo($a . " ");
// calculate terms until
// last term is not 1
while ($a != 1)
{
$b = 0;
// Check if previous
// term is even or odd
if ($a % 2 == 0)
// calculate next term
$b = floor(sqrt($a));
else
// for odd previous term
// calculate next term
$b = floor(sqrt($a) * sqrt($a) *
sqrt($a));
echo($b . " ");
$a = $b;
}
}
// Driver Code
printJuggler(3);
echo("\n");
printJuggler(9);
// This code is contributed by Ajit.
?>
<script>
// Javascript implementation of Juggler Sequence
// This function prints the juggler Sequence
function printJuggler(n)
{
let a = n;
// print the first term
document.write(a+" ");
// calculate terms until last term is not 1
while (a != 1)
{
let b = 0;
// Check if previous term is even or odd
if (a%2 == 0)
// calculate next term
b = Math.floor(Math.sqrt(a));
else
// for odd previous term calculate
// next term
b = Math.floor(Math.sqrt(a) *
Math.sqrt(a) * Math.sqrt(a));
document.write( b+" ");
a = b;
}
}
// Driver code to test above methods
printJuggler(3);
document.write("<br/>");
printJuggler(9);
// This code is contributed by avijitmondal1998.
</script>
Output:
3 5 11 36 6 2 1 9 27 140 11 36 6 2 1
Time complexity: O(nlogn) since using a single while loop and finding square root takes logarithmic time.
Space complexity: O(1) for constant variables
Important Points:
- The terms in Juggler Sequence first increase to a peak value and then start decreasing.
- The last term in Juggler Sequence is always 1.
Reference:
https://en.wikipedia.org/wiki/Juggler_sequence