# Roots of Unity

• Difficulty Level : Easy
• Last Updated : 01 Sep, 2021

Given a small integer n, print all the n’th roots of unity up to 6 significant digits. We basically need to find all roots of equation xn – 1.

Examples:

```Input :  n = 1
Output : 1.000000 + i 0.000000
x - 1 = 0 , has only one root i.e., 1

Input :  2
Output : 1.000000 + i 0.000000
-1.000000 + i 0.000000
x2 - 1 = 0 has 2 distinct roots, i.e., 1 and -1 ```

Any complex number is said to be root of unity if it gives 1 when raised to some power.
nth root of unity is any complex number such that it gives 1 when raised to the power n.

```Mathematically,
An nth root of unity, where n is a positive integer
(i.e. n = 1, 2, 3, …) is a number z satisfying the
equation

z^n  = 1
or ,
z^n - 1 = 0```

We can use the De Moivre’s formula here ,

```( Cos x + i Sin x )^k = Cos kx + i Sin kx

Setting x = 2*pi/n, we can obtain all the nth roots
of unity, using the fact that Nth roots are set of
numbers given by,

Cos (2*pi*k/n) + i Sin(2*pi*k/n)
Where, 0 <= k < n```

Using the above fact we can easily print all the nth roots of unity !

Below is the program for the same.

## C++

 `// C++ program to print n'th roots of unity``#include ``using` `namespace` `std;` `// This function receives an integer n , and prints``// all the nth roots of unity``void` `printRoots(``int` `n)``{``    ``// theta = 2*pi/n``    ``double` `theta = M_PI*2/n;` `    ``// print all nth roots with 6 significant digits``    ``for``(``int` `k=0; k= 0? ``printf``(``" + i "``): ``printf``(``" - i "``);``        ``printf``(``"%.6f\n"``, ``abs``(img));``    ``}``}` `// Driver function to check the program``int` `main()``{``    ``printRoots(1);``    ``cout << endl;``    ``printRoots(2);``    ``cout << endl;``    ``printRoots(3);``    ``return` `0;``}`

## Java

 `// Java program to print n'th roots of unity``import` `java.io.*;` `class` `GFG {` `// This function receives an integer n , and prints``// all the nth roots of unity``static` `void` `printRoots(``int` `n)``{``    ``// theta = 2*pi/n``    ``double` `theta = ``3.14``*``2``/n;` `    ``// print all nth roots with 6 significant digits``    ``for``(``int` `k=``0``; k= ``0``)``            ``System.out.println(``" + i "``);``        ``else``            ``System.out.println(``" - i "``);``        ``System.out.println(Math.abs(img));``    ``}``}` `// Driver function to check the program``public` `static` `void` `main (String[] args)``{``    ``printRoots(``1``);``    ``//System.out.println();``    ``printRoots(``2``);``    ``//System.out.println();``    ``printRoots(``3``);``}``}``// This code is contributed by Raj`

## Python3

 `# Python3 program to print n'th roots of unity` `import` `math` `# This function receives an integer n , and prints``# all the nth roots of unity``def` `printRoots(n):` `    ``# theta = 2*pi/n``    ``theta ``=` `math.pi ``*` `2` `/` `n` `    ``# print all nth roots with 6 significant digits``    ``for` `k ``in` `range``(``0``, n):` `        ``# calculate the real and imaginary part of root``        ``real ``=` `math.cos(k ``*` `theta)``        ``img ``=` `math.sin(k ``*` `theta)` `        ``# Print real and imaginary parts``        ``print``(real, end``=``" "``)``        ``if``(img >``=` `0``):``            ``print``(``" + i "``, end``=``" "``)``        ``else``:``            ``print``(``" - i "``, end``=``" "``)``        ``print``(``abs``(img))`  `# Driver function to check the program``if` `__name__``=``=``'__main__'``:``    ``printRoots(``1``)``    ``printRoots(``2``)``    ``printRoots(``3``)` `# This code is contributed by``# Sanjit_Prasad`

## C#

 `// C# program to print n'th roots of unity``using` `System;` `class` `GFG {` `// This function receives an integer n , and prints``// all the nth roots of unity``static` `void` `printRoots(``int` `n)``{``    ``// theta = 2*pi/n``    ``double` `theta = 3.14*2/n;` `    ``// print all nth roots with 6 significant digits``    ``for``(``int` `k=0; k= 0)``            ``Console.Write(``" + i "``);``        ``else``            ``Console.Write(``" - i "``);``        ``Console.WriteLine(Math.Abs(img));``    ``}``}` `// Driver function to check the program``static` `void` `Main()``{``    ``printRoots(1);``     ` `    ``printRoots(2);``     ` `    ``printRoots(3);``}``}``// This code is contributed by mits`

## PHP

 `= 0 ? ``print``(``" + i "``): ``print``(``" - i "``);``        ``printf(``round``(``abs``(``\$img``), 6) . ``"\n"``);``    ``}``}` `// Driver Code``printRoots(1);``printRoots(2);``printRoots(3);` `// This code is contributed by mits``?>`

## Javascript

 ``

Output:

```1.000000 + i 0.000000
1.000000 + i 0.000000
-1.000000 + i 0.000000
1.000000 + i 0.000000
-0.500000 + i 0.866025
-0.500000 - i 0.866025```

References: Wikipedia

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