# Roots of Unity

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
```

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

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 "````, ``abs``(img)); ` `    ``} ` `} ` ` `  `// Driver function to check the program ` `int` `main() ` `{ ` `    ``printRoots(1); ` `    ``cout << endl; ` `    ``printRoots(2); ` `    ``cout << endl; ` `    ``printRoots(3); ` `    ``return` `0; ` `} `

/div>

## 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 conributed 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 conributed by mits `

## PHP

= 0 ? print(” + i “): print(” – i “);
printf(round(abs(\$img), 6) . “ ”);
}
}

// Driver Code
printRoots(1);
printRoots(2);
printRoots(3);

// This code is contributed by mits
?>

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

## tags:

Mathematical Mathematical