Related Articles
Generate all cyclic permutations of a number
• Difficulty Level : Basic
• Last Updated : 06 Aug, 2018

Given a number N, our task is to generate all the possible cyclic permutations of the number.

A cyclic permutation shifts all the elements of a set by a fixed offset. For a set with elements , , …, , a cyclic permutation of one place to the left would yield , …, , , and a cyclic permutation of one place to the right would yield , , , ….

Examples:

```Input :  123
Output : 123
312
231

Input :  5674
Output : 5674
4567
7456
6745
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

The idea is to generate next permutation of a number using below formula.

```    rem = num % 10;
div = num / 10;
num = (pow(10, n - 1)) * rem + div;
```

While repeating above steps, if we come back to original number, we stop and return.

## C++

 `// Program to generate all cyclic permutations``// of number``#include ``using` `namespace` `std;`` ` `// Function to count the total number of digits ``// in a number.``int` `countdigits(``int` `N)``{``    ``int` `count = 0;``    ``while` `(N) {``        ``count++;``        ``N = N / 10;``    ``}``    ``return` `count;``}`` ` `// Function to generate all cyclic permutations``// of a number``void` `cyclic(``int` `N)``{``    ``int` `num = N;``    ``int` `n = countdigits(N);`` ` `    ``while` `(1) {``        ``cout << num << endl;`` ` `        ``// Following three lines generates a``        ``// circular pirmutation of a number.``        ``int` `rem = num % 10;``        ``int` `div` `= num / 10;``        ``num = (``pow``(10, n - 1)) * rem + ``div``;`` ` `        ``// If all the permutations are checked``        ``// and we obtain original number exit``        ``// from loop.``        ``if` `(num == N) ``            ``break``;        ``    ``}``}`` ` `// Driver Program``int` `main()``{``    ``int` `N = 5674;``    ``cyclic(N);``    ``return` `0;``}`

## Java

 `// Java Program to generate all ``// cyclic permutations of number``class` `GFG``{`` ` `    ``// Function to count the total number``    ``// of digits in a number.``    ``static` `int` `countdigits(``int` `N)``    ``{``        ``int` `count = ``0``;``        ``while` `(N>``0``) {``            ``count++;``            ``N = N / ``10``;``        ``}``        ``return` `count;``    ``}`` ` `    ``// Function to generate all cyclic``    ``// permutations of a number``    ``static` `void` `cyclic(``int` `N)``    ``{``        ``int` `num = N;``        ``int` `n = countdigits(N);`` ` `        ``while` `(``true``) {``            ``System.out.println(num); `` ` `            ``// Following three lines generates a``            ``// circular pirmutation of a number.``            ``int` `rem = num % ``10``;``            ``int` `dev = num / ``10``;``            ``num = (``int``)((Math.pow(``10``, n - ``1``)) *``                                ``rem + dev);`` ` `            ``// If all the permutations are ``            ``// checked and we obtain original``            ``// number exit from loop.``            ``if` `(num == N) ``                ``break``; ``        ``}``    ``}`` ` `    ``// Driver Program``    ``public` `static` `void` `main (String[] args) {``    ``int` `N = ``5674``;``    ``cyclic(N);``    ``}``}`` ` `/* This code is contributed by Mr. Somesh Awasthi */`

## Python3

 `# Python3 Program to ``# generate all cyclic``# permutations of number``import` `math`` ` `# Function to count the ``# total number of digits``# in a number.``def` `countdigits(N):``    ``count ``=` `0``;``    ``while` `(N):``        ``count ``=` `count ``+` `1``;``        ``N ``=` `int``(math.floor(N ``/` `10``));``    ``return` `count;``     ` `# Function to generate ``# all cyclic permutations``# of a number``def` `cyclic(N):``    ``num ``=` `N;``    ``n ``=` `countdigits(N);``    ``while` `(``1``):``        ``print``(``int``(num));``         ` `        ``# Following three lines ``        ``# generates a circular ``        ``# permutation of a number.``        ``rem ``=` `num ``%` `10``;``        ``div ``=` `math.floor(num ``/` `10``);``        ``num ``=` `((math.``pow``(``10``, n ``-` `1``)) ``*` `                           ``rem ``+` `div);``         ` `        ``# If all the permutations ``        ``# are checked and we obtain ``        ``# original number exit from loop.``        ``if` `(num ``=``=` `N):``            ``break``; ``             ` `# Driver Code``N ``=` `5674``;``cyclic(N);`` ` `# This code is contributed by mits`

## C#

 `// C# Program to generate all ``// cyclic permutations of number``using` `System;`` ` `class` `GFG``{``    ``// Function to count the total number``    ``// of digits in a number.``    ``static` `int` `countdigits(``int` `N)``    ``{``        ``int` `count = 0;``        ``while` `(N > 0) {``            ``count++;``            ``N = N / 10;``        ``}``        ``return` `count;``    ``}`` ` `    ``// Function to generate all cyclic``    ``// permutations of a number``    ``static` `void` `cyclic(``int` `N)``    ``{``        ``int` `num = N;``        ``int` `n = countdigits(N);`` ` `        ``while` `(``true``) {``            ``Console.WriteLine(num); `` ` `            ``// Following three lines generates a``            ``// circular permutation of a number.``            ``int` `rem = num % 10;``            ``int` `dev = num / 10;``            ``num = (``int``)((Math.Pow(10, n - 1)) *``                                    ``rem + dev);`` ` `            ``// If all the permutations are ``            ``// checked and we obtain original``            ``// number exit from loop.``            ``if` `(num == N) ``                ``break``; ``        ``}``    ``}`` ` `    ``// Driver Program``    ``public` `static` `void` `Main () ``    ``{``      ``int` `N = 5674;``      ``cyclic(N);``    ``}``}`` ` `// This code is contributed by nitin mittal`

## PHP

 ``

Output:
``` 5674
4567
7456
6745
```

This article is contributed by Vineet Joshi. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.