logo

Fonction Totient d'Euler

La fonction Totient d'Euler Φ(n) pour une entrée n est le nombre de nombres dans {1, 2, 3,…, n-1} qui sont relativement premiers à n, c'est-à-dire les nombres dont le PGCD (plus grand diviseur commun) avec n est 1.

Exemples :



Φ(1) = 1
pgcd(1, 1) vaut 1

Φ(2) = 1
pgcd(1, 2) vaut 1, mais pgcd(2, 2) vaut 2.

Φ(3) = 2
pgcd(1, 3) vaut 1 et pgcd(2, 3) vaut 1

Φ(4) = 2
pgcd(1, 4) vaut 1 et pgcd(3, 4) vaut 1

Φ(5) = 4
pgcd(1, 5) vaut 1, pgcd(2, 5) vaut 1,
pgcd(3, 5) vaut 1 et pgcd(4, 5) vaut 1

Φ(6) = 2
pgcd(1, 6) vaut 1 et pgcd(5, 6) vaut 1,

Pratique recommandée Fonction Euler Totient Essayez-le !

Comment calculer Φ(n) pour une entrée n ?
UN solution simple consiste à parcourir tous les nombres de 1 à n-1 et à compter les nombres avec pgcd avec n égal à 1. Vous trouverez ci-dessous l'implémentation de la méthode simple pour calculer la fonction Totient d'Euler pour un entier d'entrée n.

C // A simple C program to calculate Euler's Totient Function #include // Function to return gcd of a and b int gcd(int a, int b) { if (a == 0) return b; return gcd(b % a, a); } // A simple method to evaluate Euler Totient Function int phi(unsigned int n) { unsigned int result = 1; for (int i = 2; i < n; i++) if (gcd(i, n) == 1) result++; return result; } // Driver program to test above function int main() { int n; for (n = 1; n <= 10; n++) printf('phi(%d) = %d ', n, phi(n)); return 0; }>Java // A simple java program to calculate // Euler's Totient Function import java.io.*; class GFG { // Function to return GCD of a and b static int gcd(int a, int b) { if (a == 0) return b; return gcd(b % a, a); } // A simple method to evaluate // Euler Totient Function static int phi(int n) { int result = 1; for (int i = 2; i < n; i++) if (gcd(i, n) == 1) result++; return result; } // Driver code public static void main(String[] args) { int n; for (n = 1; n <= 10; n++) System.out.println('phi(' + n + ') = ' + phi(n)); } } // This code is contributed by sunnusingh>Python3 # A simple Python3 program # to calculate Euler's # Totient Function # Function to return # gcd of a and b def gcd(a, b): if (a == 0): return b return gcd(b % a, a) # A simple method to evaluate # Euler Totient Function def phi(n): result = 1 for i in range(2, n): if (gcd(i, n) == 1): result+=1 return result # Driver Code for n in range(1, 11): print('phi(',n,') = ', phi(n), sep = '') # This code is contributed # by Smitha>C# // A simple C# program to calculate // Euler's Totient Function using System; class GFG { // Function to return GCD of a and b static int gcd(int a, int b) { if (a == 0) return b; return gcd(b % a, a); } // A simple method to evaluate // Euler Totient Function static int phi(int n) { int result = 1; for (int i = 2; i < n; i++) if (gcd(i, n) == 1) result++; return result; } // Driver code public static void Main() { for (int n = 1; n <= 10; n++) Console.WriteLine('phi(' + n + ') = ' + phi(n)); } } // This code is contributed by nitin mittal>Javascript >PHP <Φphp // PHP program to calculate // Euler's Totient Function // Function to return // gcd of a and b function gcd($a, $b) { if ($a == 0) return $b; return gcd($b % $a, $a); } // A simple method to evaluate // Euler Totient Function function phi($n) { $result = 1; for ($i = 2; $i <$n; $i++) if (gcd($i, $n) == 1) $result++; return $result; } // Driver Code for ($n = 1; $n <= 10; $n++) echo 'phi(' .$n. ') =' . phi($n).' '; // This code is contributed by Sam007 Φ>>C++ // A simple C++ program to calculate // Euler's Totient Function #include using namespace std; // Function to return gcd of a and b int gcd(int a, int b) { if (a == 0) return b; return gcd(b % a, a); } // A simple method to evaluate Euler Totient Function int phi(unsigned int n) { unsigned int result = 1; for (int i = 2; i < n; i++) if (gcd(i, n) == 1) result++; return result; } // Driver program to test above function int main() { int n; for (n = 1; n <= 10; n++) cout << 'phi('<
Sortir

phi(1) = 1 phi(2) = 1 phi(3) = 2 phi(4) = 2 phi(5) = 4 phi(6) = 2 phi(7) = 6 phi(8) = 4 phi( 9) = 6 phi(10) = 4




Le code ci-dessus appelle la fonction gcd O(n) fois. La complexité temporelle de la fonction pgcd est O(h) où h est le nombre de chiffres dans un plus petit nombre de deux nombres donnés. Par conséquent, une limite supérieure sur le complexité temporelle de la solution ci-dessus est O(N^2 log N) [Comment Φ peut-il y avoir au plus Logdixn chiffres dans tous les nombres de 1 à n]

Espace auxiliaire : O (log N)


Ci-dessous se trouve un Meilleure solution . L’idée est basée sur la formule du produit d’Euler qui stipule que la valeur des fonctions totales est inférieure au produit des facteurs premiers globaux p de n.



La formule dit essentiellement que la valeur de Φ(n) est égale à n multiplié par le sous-produit de (1 – 1/p) pour tous les facteurs premiers p de n. Par exemple, la valeur de Φ(6) = 6 * (1-1/2) * (1 – 1/3) = 2.
Nous pouvons trouver tous les facteurs premiers en utilisant l'idée utilisée dans ce poste.

1) Initialiser : résultat = n
2) Exécutez une boucle de 'p' = 2 à sqrt(n), procédez comme suit pour chaque 'p'.
a) Si p divise n, alors
Ensemble : résultat = résultat * (1,0 - (1,0 / (float) p));
Divisez toutes les occurrences de p dans n.
3) Retourner le résultat


Vous trouverez ci-dessous la mise en œuvre de la formule du produit d’Euler.

C++ // C++ program to calculate Euler's // Totient Function using Euler's // product formula #include using namespace std; int phi(int n) { // Initialize result as n float result = n; // Consider all prime factors of n // and for every prime factor p, // multiply result with (1 - 1/p) for(int p = 2; p * p <= n; ++p) { // Check if p is a prime factor. if (n % p == 0) { // If yes, then update n and result while (n % p == 0) n /= p; result *= (1.0 - (1.0 / (float)p)); } } // If n has a prime factor greater than sqrt(n) // (There can be at-most one such prime factor) if (n>1) résultat -= résultat / n ; //Puisque dans l'ensemble {1,2,....,n-1}, tous les nombres sont relativement premiers avec n //si n est un nombre premier return (int)result; } // Code du pilote int main() { int n; pour(n = 1; n<= 10; n++) { cout << 'Phi' << '(' << n << ')' << ' = ' << phi(n) <C // C program to calculate Euler's Totient Function // using Euler's product formula #include int phi(int n) { float result = n; // Initialize result as n // Consider all prime factors of n and for every prime // factor p, multiply result with (1 - 1/p) for (int p = 2; p * p <= n; ++p) { // Check if p is a prime factor. if (n % p == 0) { // If yes, then update n and result while (n % p == 0) n /= p; result *= (1.0 - (1.0 / (float)p)); } } // If n has a prime factor greater than sqrt(n) // (There can be at-most one such prime factor) if (n>1) résultat -= résultat / n ; //Puisque dans l'ensemble {1,2,....,n-1}, tous les nombres sont relativement premiers avec n //si n est un nombre premier return (int)result; } // Programme pilote pour tester la fonction ci-dessus int main() { int n; pour (n = 1; n<= 10; n++) printf('phi(%d) = %d ', n, phi(n)); return 0; }>Java // Java program to calculate Euler's Totient // Function using Euler's product formula import java.io.*; class GFG { static int phi(int n) { // Initialize result as n float result = n; // Consider all prime factors of n and for // every prime factor p, multiply result // with (1 - 1/p) for (int p = 2; p * p <= n; ++p) { // Check if p is a prime factor. if (n % p == 0) { // If yes, then update n and result while (n % p == 0) n /= p; result *= (1.0 - (1.0 / (float)p)); } } // If n has a prime factor greater than sqrt(n) // (There can be at-most one such prime factor) if (n>1) résultat -= résultat / n ; //Puisque dans l'ensemble {1,2,....,n-1}, tous les nombres sont relativement premiers avec n //si n est un nombre premier return (int)result; } // Programme pilote pour tester la fonction ci-dessus public static void main(String args[]) { int n; pour (n = 1; n<= 10; n++) System.out.println('phi(' + n + ') = ' + phi(n)); } } // This code is contributed by Nikita Tiwari.>Python3 # Python 3 program to calculate # Euler's Totient Function # using Euler's product formula def phi(n) : result = n # Initialize result as n # Consider all prime factors # of n and for every prime # factor p, multiply result with (1 - 1 / p) p = 2 while p * p<= n : # Check if p is a prime factor. if n % p == 0 : # If yes, then update n and result while n % p == 0 : n = n // p result = result * (1.0 - (1.0 / float(p))) p = p + 1 # If n has a prime factor # greater than sqrt(n) # (There can be at-most one # such prime factor) if n>1 : résultat -= résultat // n #Puisque dans l'ensemble {1,2,....,n-1}, tous les nombres sont relativement premiers avec n #si n est un nombre premier return int(result) # Driver programme pour tester la fonction ci-dessus pour n dans range(1, 11) : print('phi(', n, ') = ', phi(n)) # Ce code est contribué # par Nikita Tiwari.>C# // C# program to calculate Euler's Totient // Function using Euler's product formula using System; class GFG { static int phi(int n) { // Initialize result as n float result = n; // Consider all prime factors // of n and for every prime // factor p, multiply result // with (1 - 1 / p) for (int p = 2; p * p <= n; ++p) { // Check if p is a prime factor. if (n % p == 0) { // If yes, then update // n and result while (n % p == 0) n /= p; result *= (float)(1.0 - (1.0 / (float)p)); } } // If n has a prime factor // greater than sqrt(n) // (There can be at-most // one such prime factor) if (n>1) résultat -= résultat / n ; //Puisque dans l'ensemble {1,2,....,n-1}, tous les nombres sont relativement premiers avec n //si n est un nombre premier return (int)result; } // Code du pilote public static void Main() { int n; pour (n = 1; n<= 10; n++) Console.WriteLine('phi(' + n + ') = ' + phi(n)); } } // This code is contributed by nitin mittal.>Javascript // Javascript program to calculate // Euler's Totient Function // using Euler's product formula function phi(n) { // Initialize result as n let result = n; // Consider all prime factors // of n and for every prime // factor p, multiply result // with (1 - 1/p) for (let p = 2; p * p <= n; ++p) { // Check if p is // a prime factor. if (n % p == 0) { // If yes, then update // n and result while (n % p == 0) n /= p; result *= (1.0 - (1.0 / p)); } } // If n has a prime factor greater // than sqrt(n) (There can be at-most // one such prime factor) if (n>1) résultat -= résultat / n ; //Puisque dans l'ensemble {1,2,....,n-1}, tous les nombres sont relativement premiers avec n //si n est un nombre premier return parseInt(result); } // Code du pilote pour (soit n = 1 ; n<= 10; n++) document.write(`phi(${n}) = ${phi(n)} `); // This code is contributed by _saurabh_jaiswal>PHP <Φphp // PHP program to calculate // Euler's Totient Function // using Euler's product formula function phi($n) { // Initialize result as n $result = $n; // Consider all prime factors // of n and for every prime // factor p, multiply result // with (1 - 1/p) for ($p = 2; $p * $p <= $n; ++$p) { // Check if p is // a prime factor. if ($n % $p == 0) { // If yes, then update // n and result while ($n % $p == 0) $n /= $p; $result *= (1.0 - (1.0 / $p)); } } // If n has a prime factor greater // than sqrt(n) (There can be at-most // one such prime factor) if ($n>1) $résultat -= $résultat / $n ; //Puisque dans l'ensemble {1,2,....,n-1}, tous les nombres sont relativement premiers avec n //si n est un nombre premier return intval($result); } // Code du conducteur pour ($n = 1 ; $n<= 10; $n++) echo 'phi(' .$n. ') =' . phi($n).' '; // This code is contributed by Sam007 Φ>>
Sortir

Phi(1) = 1 Phi(2) = 1 Phi(3) = 2 Phi(4) = 2 Phi(5) = 4 Phi(6) = 2 Phi(7) = 6 Phi(8) = 4 Phi( 9) = 6 Phi(10) = 4

Complexité temporelle : O(Φnlogn)
Espace auxiliaire : O(1)

Nous pouvons éviter les calculs à virgule flottante dans la méthode ci-dessus. L'idée est de compter tous les facteurs premiers et leurs multiples et de soustraire ce nombre de n pour obtenir la valeur totale de la fonction (les facteurs premiers et les multiples de facteurs premiers n'auront pas pgcd égal à 1)

1) Initialiser le résultat comme n
2) Considérez chaque nombre « p » (où « p » varie de 2 à Φ(n)).
Si p divise n, alors procédez comme suit
a) Soustraire tous les multiples de p de 1 à n [tous les multiples de p
aura un pgcd supérieur à 1 (au moins p) avec n]
b) Mettez à jour n en le divisant à plusieurs reprises par p.
3) Si le n réduit est supérieur à 1, supprimez tous les multiples
de n à partir du résultat.

Vous trouverez ci-dessous l'implémentation de l'algorithme ci-dessus.

C++ // C++ program to calculate Euler's // Totient Function #include using namespace std; int phi(int n) { // Initialize result as n int result = n; // Consider all prime factors of n // and subtract their multiples // from result for(int p = 2; p * p <= n; ++p) { // Check if p is a prime factor. if (n % p == 0) { // If yes, then update n and result while (n % p == 0) n /= p; result -= result / p; } } // If n has a prime factor greater than sqrt(n) // (There can be at-most one such prime factor) if (n>1) résultat -= résultat / n ; renvoyer le résultat ; } // Code du pilote int main() { int n; pour(n = 1; n<= 10; n++) { cout << 'Phi' << '(' << n << ')' << ' = ' << phi(n) << endl; } return 0; } // This code is contributed by koulick_sadhu>C // C program to calculate Euler's Totient Function #include int phi(int n) { int result = n; // Initialize result as n // Consider all prime factors of n and subtract their // multiples from result for (int p = 2; p * p <= n; ++p) { // Check if p is a prime factor. if (n % p == 0) { // If yes, then update n and result while (n % p == 0) n /= p; result -= result / p; } } // If n has a prime factor greater than sqrt(n) // (There can be at-most one such prime factor) if (n>1) résultat -= résultat / n ; renvoyer le résultat ; } // Programme pilote pour tester la fonction ci-dessus int main() { int n; pour (n = 1; n<= 10; n++) printf('phi(%d) = %d ', n, phi(n)); return 0; }>Java // Java program to calculate // Euler's Totient Function import java.io.*; class GFG { static int phi(int n) { // Initialize result as n int result = n; // Consider all prime factors // of n and subtract their // multiples from result for (int p = 2; p * p <= n; ++p) { // Check if p is // a prime factor. if (n % p == 0) { // If yes, then update // n and result while (n % p == 0) n /= p; result -= result / p; } } // If n has a prime factor // greater than sqrt(n) // (There can be at-most // one such prime factor) if (n>1) résultat -= résultat / n ; renvoyer le résultat ; } // Code du pilote public static void main (String[] args) { int n; pour (n = 1; n<= 10; n++) System.out.println('phi(' + n + ') = ' + phi(n)); } } // This code is contributed by ajit>Python3 # Python3 program to calculate # Euler's Totient Function def phi(n): # Initialize result as n result = n; # Consider all prime factors # of n and subtract their # multiples from result p = 2; while(p * p <= n): # Check if p is a # prime factor. if (n % p == 0): # If yes, then # update n and result while (n % p == 0): n = int(n / p); result -= int(result / p); p += 1; # If n has a prime factor # greater than sqrt(n) # (There can be at-most # one such prime factor) if (n>1) : résultat -= int(résultat / n); renvoyer le résultat ; # Code du pilote pour n dans la plage (1, 11) : print('phi(',n,') =', phi(n)); # Ce code est contribué # par mits>C# // C# program to calculate // Euler's Totient Function using System; class GFG { static int phi(int n) { // Initialize result as n int result = n; // Consider all prime // factors of n and // subtract their // multiples from result for (int p = 2; p * p <= n; ++p) { // Check if p is // a prime factor. if (n % p == 0) { // If yes, then update // n and result while (n % p == 0) n /= p; result -= result / p; } } // If n has a prime factor // greater than sqrt(n) // (There can be at-most // one such prime factor) if (n>1) résultat -= résultat / n ; renvoyer le résultat ; } // Code du pilote static public void Main () { int n; pour (n = 1; n<= 10; n++) Console.WriteLine('phi(' + n + ') = ' + phi(n)); } } // This code is contributed // by akt_mit>Javascript // Javascript program to calculate // Euler's Totient Function function phi(n) { // Initialize // result as n let result = n; // Consider all prime // factors of n and subtract // their multiples from result for (let p = 2; p * p <= n; ++p) { // Check if p is // a prime factor. if (n % p == 0) { // If yes, then // update n and result while (n % p == 0) n = parseInt(n / p); result -= parseInt(result / p); } } // If n has a prime factor // greater than sqrt(n) // (There can be at-most // one such prime factor) if (n>1) résultat -= parseInt(résultat / n); renvoyer le résultat ; } // Code du pilote pour (soit n = 1 ; n<= 10; n++) document.write(`phi(${n}) = ${phi(n)} `); // This code is contributed // by _saurabh_jaiswal>PHP <Φphp // PHP program to calculate // Euler's Totient Function function phi($n) { // Initialize // result as n $result = $n; // Consider all prime // factors of n and subtract // their multiples from result for ($p = 2; $p * $p <= $n; ++$p) { // Check if p is // a prime factor. if ($n % $p == 0) { // If yes, then // update n and result while ($n % $p == 0) $n = (int)$n / $p; $result -= (int)$result / $p; } } // If n has a prime factor // greater than sqrt(n) // (There can be at-most // one such prime factor) if ($n>1) $résultat -= (int)$résultat / $n ; renvoie $résultat ; } // Code du conducteur pour ($n = 1 ; $n<= 10; $n++) echo 'phi(', $n,') =', phi($n), ' '; // This code is contributed // by ajit Φ>>
Sortir

Phi(1) = 1 Phi(2) = 1 Phi(3) = 2 Phi(4) = 2 Phi(5) = 4 Phi(6) = 2 Phi(7) = 6 Phi(8) = 4 Phi( 9) = 6 Phi(10) = 4

Complexité temporelle : O(Φnlogn)
Espace auxiliaire : O(1)

Prenons un exemple pour comprendre l'algorithme ci-dessus.

n = 10.
Initialiser : résultat = 10

2 est un facteur premier, donc n = n/i = 5, résultat = 5
3 n’est pas un facteur premier.

La boucle for s'arrête après 3 car 4*4 n'est pas inférieur ou égal
à 10.

Après la boucle for, résultat = 5, n = 5
Puisque n> 1, résultat = résultat - résultat/n = 4

Quelques propriétés intéressantes de la fonction Totient d’Euler


1) Pour un nombre premier p ,phi(p) = p – 1

Preuve :

chaîne comparer c#

phi(p) = p - 1, où p est un nombre premier. Nous savons quegcd(p, k) = 1où k est n'importe quel nombre aléatoire etk eq pNombre total de 1 à p = p Nombre pour lequelgcd(p, k) = 1est1, c'est-à-dire le nombre p lui-même, donc en soustrayant 1 de pphi(p) = p - 1

Exemples :

phi(5) = 5 - 1 = 4phi(13) = 13 - 1 = 12phi(29) = 29 - 1 = 28


2) Pour deux nombres premiers a et b phi(a cdot b) = phi(a) cdot phi(b) = (a – 1) cdot (b – 1) , utilisé dans Algorithme RSA

Preuve :

phi(acdot b) = phi(a) cdot phi(b), où a et b sont des nombres premiersphi(a) = a - 1,phi(b) = b - 1Nombre total de 1 à ab = ab Multiples totaux de a de 1 à ab =frac{a cdot b} {a}=bMultiples totaux de b de 1 à ab =frac{a cdot b} {b}=a Exemple: a = 5, b = 7, ab = 35Multiples de a =frac {35} {5}= 7 {5, 10, 15, 20, 25, 30, 35}Multiples de b =frac {35} {7}= 5 {7, 14, 21, 28, 35} Peut-il y avoir une double comptabilisation ? (regardez attentivement l'exemple ci-dessus, essayez avec d'autres nombres premiers aussi pour mieux comprendre)Bien sûr, nous avons comptéab deux fois en multiples de a et multiples de b donc, Total des multiples = a + b - 1 (avec lequelgcd eq 1avecab)phi(ab) = ab - (a + b - 1), en supprimant tous les numéros avecgcd eq 1avecab phi(ab) = a(b - 1) - (b - 1)phi(ab) = (a - 1) cdot (b - 1)phi(ab) = phi(a) cdot phi(b)

Exemples :

phi(5 cdot 7) = phi(5) cdot phi(7) = (5 - 1) cdot (7 - 1) = 24phi(3 cdot 5) = phi(3) cdot phi(5) = (3 - 1) cdot (5 - 1) = 8phi(3 cdot 7) = phi(3) cdot phi(7) = (3 - 1) cdot (7 - 1) = 12


3) Pour un nombre premier p ,phi(p ^ k) = p ^ k – p ^ {k – 1}

Preuve :

phi(p^k) = p ^ k - p ^{k - 1}, où p est un nombre premierNombres totaux de 1 àp ^ k = p ^ kMultiples totaux dep = frac {p ^ k} {p} = p ^ {k - 1}Supprimer ces multiples comme avec euxgcd eq 1 Exemple : p = 2, k = 5,p ^ k= 32Multiples de 2 (comme pour euxgcd eq 1) = 32 / 2 = 16 {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32}phi(p ^ k) = p ^ k - p ^ {k - 1}

Exemples :

phi(2 ^ 5) = 2 ^ 5 - 2 ^ {5 - 1} = 32 - 16 = 16phi(5 ^ 3) = 5 ^ 3 - 5 ^ {3 - 1} = 125 - 25 = 100phi(3 ^ 5) = 3 ^ 5 - 3 ^ {5 - 1} = 243 - 81 = 162


4) Pour deux numéros a et b phi(a cdot b) = phi(a) cdot phi(b) cdot frac {gcd(a, b)} {phi(gcd(a, b))}

Cas particulier : pgcd(a, b) = 1

git paiement

phi(a cdot b) = phi(a) cdot phi(b) cdot frac {1} {phi(1)} = phi(a) cdot phi(b)

Exemples :

Cas particulier : gcd(a, b) = 1 , phi(a cdot b) = phi(a) cdot phi(b) phi(2 cdot 9) = phi(2) cdot phi(9) = 1 cdot 6 = 6phi(8 cdot 9) = phi(8) cdot phi(9) = 4 cdot 6 = 24phi(5 cdot 6) = phi(5) cdot phi(6) = 4 cdot 2 = 8 Cas normal : gcd(a, b) eq 1 , phi(a cdot b) = phi(a) cdot phi(b) cdot frac {gcd(a, b)} {phi(gcd(a, b))}phi(4 cdot 6) = phi(4) cdot phi(6) cdot frac {gcd(4, 6)} {phi(gcd(4, 6))} = 2 cdot 2 cdot frac{2}{1} = 2 cdot 2 cdot 2 = 8phi(4 cdot 8) = phi(4) cdot phi(8) cdot frac {gcd(4, 8)} {phi(gcd(4, 8))} = 2 cdot 4 cdot frac{4}{2} = 2 cdot 4 cdot 2 = 16phi(6 cdot 8) = phi(6) cdot phi(8) cdot frac {gcd(6, 8)} {phi(gcd(6, 8))} = 2 cdot 4 cdot frac{2}{1} = 2 cdot 4 cdot 2 = 16

5) La somme des valeurs des fonctions totales de tous les diviseurs de n est égale à n.

gauss


Exemples :

n = 6
facteurs = {1, 2, 3, 6}
n =phi(1) + phi(2) + phi(3) + phi(6)= 1 + 1 + 2 + 2 = 6n = 8 facteurs = {1, 2, 4, 8}n =phi(1) + phi(2) + phi(4) + phi(8)= 1 + 1 + 2 + 4 = 8n = 10 facteurs = {1, 2, 5, 10}n =phi(1) + phi(2) + phi(5) + phi(10)= 1 + 1 + 4 + 4 = 10

6) La caractéristique la plus célèbre et la plus importante est exprimée dans Théorème d'Euler :

Le théorème dit que si n et a sont premiers entre eux
(ou relativement premiers) entiers positifs, alors

unΦ(n)Φ 1 (mod n)

Le Cryptosystème RSA est basé sur ce théorème :
Dans le cas particulier où m est premier, disons p, le théorème d’Euler se transforme en ce qu’on appelle Le petit théorème de Fermat :

unp-1Φ 1 (contre p)

7) Le nombre de générateurs d'un groupe cyclique fini sous addition modulo n est Φ(n) .

Article associé:
Fonction Totient d'Euler pour tous les nombres inférieurs ou égaux à n
Fonction Euler Totient optimisée pour plusieurs évaluations

Les références:
http://e-maxx.ru/algo/euler_function
http://en.wikipedia.org/wiki/Euler%27s_totient_function

https://cp-algorithms.com/algebra/phi-function.html

http://mathcenter.oxford.memory.edu/site/math125/chineseRemainderTheorem/