[Python] Fonction indicatrice d'Euler

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Charmander
Membre Naturel
Messages: 90
Enregistré le: 13 Oct 2013, 16:22

[Python] Fonction indicatrice d'Euler

par Charmander » 20 Oct 2013, 16:33

Bonjour, je cherche de l'aide pour programmer sur Python la fonction P indicatrice d'Euler. J'y arrive par la méthode naïve en testant tous les nombres inférieurs à n mais je souhaite obtenir un programme qui marche pour les grands nombres.

Il m'est indiqué d'ailleurs d'utiliser la relation:

avec la somme portant sur les diviseurs positifs de n.

Même si vous ne savez pas comment programmer en Python, savez-vous comment calculer facilement P(n) à l'aide de cette relation ? Merci d'avance !



Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 20 Oct 2013, 17:15

slt,

si on te dit d'utiliser le résultat, alors tu remarques que les diviseurs de n, c'est 1,d_1,...,d_k,n
Tu as donc P(1)+...+P(d_k)+P(n)=n
d'ou P(n)=n-P(1)-...-P(d_k)

Tu n'as plus qu'à faire un inventaire des diviseurs d de n, et pour chacun de ses diviseurs, calculer P(d).
La fonction récursive ressemble à qqch comme

Code: Tout sélectionner
function P(n)
 if n == 1; return 1;
 var allDivisorOfN = getDivisorOfN(n)
 var result = n
 forall allDivisorOfN as divisorOfN
   result -= P(divisorOfN)
 endforall
 return result;
end


Bien sûr, tu devrais stocker tes résultats intermédiaires dans un tableau, (memoization)
la vie est une fête :)

Charmander
Membre Naturel
Messages: 90
Enregistré le: 13 Oct 2013, 16:22

par Charmander » 20 Oct 2013, 21:14

D'accord, merci beaucoup ! :)

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 66 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite