Inscription / Connexion Nouveau Sujet
Niveau Maths sup
Partager :

algorithme python nombres parfaits

Posté par
vanvan1999
31-10-17 à 14:52

Bonjour,
Je suis en PCSI et je dois faire un exercice de programmation en python sur les nombres parfaits...

1-Ecrire une fonction qui vérifie si un  nombre n est parfait. Cette fonction renverra le booléen True si n est parfait, False sinon.
Ca j ai réussi:
def parfait(n)"retourne True si nombre parfait, False sinon")
n=int(input("Donner un  nombre n="))
S=0
for i in range (1,n//2+1):
    if n % i ==0 :
      S=S+i
if S==n :
    print ("True")
else :      
    print ("False")

2-Ecrire un programme utilisant la fonction précédente sui renvoie les p premiers nombres parfaits. Essayer avec p=4 puis p=5.
Et là je n y arrive pas et je ne vois pas trop comment faire ...
Voilà ce que j ai essayé de faire:
def nombre_parfait (n):
p=int(input("donner un entier naturel p="))
J=0
while J<p :
    if parfait(n)==True :
        print (J=J+1)
    else :
        print (J=J)
print J

Pourriez-vous m indiquer ou mon programme cloche ? J ai surement toput faux mais dans ce cas la, par ou commencer ?

Merci d avance !!

    

Posté par
alb12
re : algorithme python nombres parfaits 31-10-17 à 15:12

salut,
que vient faire n dans la seconde fonction ?

Posté par
alb12
re : algorithme python nombres parfaits 31-10-17 à 15:16

ta premiere fonction n'a pas de valeur de retour.

Posté par
vanvan1999
re : algorithme python nombres parfaits 31-10-17 à 18:00

ne doit on pas partir de la fonction précédente ?

Posté par
vanvan1999
re : algorithme python nombres parfaits 31-10-17 à 18:01

que faudrait-il mettre en valeur de retour ?
J n est-il pas une valeur de retour ...?
En tt cas merci beaucoup de vos réponses !!

Posté par
alb12
re : algorithme python nombres parfaits 31-10-17 à 18:07

il y a des tas programmes python sur le web traitant de ce sujet.
Il suffit de chercher ...
une fonction doit avoir au moins un return qqchose (pas un print)


def parfait(n):#parfait(n) retourne True si le nombre est parfait ou False sinon
    s=0
    for i in range(1,n//2+1):
        if n % i ==0 :
            s=s+i
    if s==n:
        return True
    else:
        return False

Posté par
vanvan1999
re : algorithme python nombres parfaits 31-10-17 à 18:45

D'accord, mais ce que vous venez d'écrire c est ce que j ai fait pour la première question me semble-t-il ?
J'ai cherché sur internet et effectivement il y a beaucoup de choses mais pas sur la deuxième question exactement...
Mais je vais rechercher encore
merci !!

Posté par
alb12
re : algorithme python nombres parfaits 31-10-17 à 21:12

"D'accord, mais ce que vous venez d'écrire c est ce que j ai fait pour la première question me semble-t-il ?"
tu ne vois pas de difference ?

Posté par
vanvan1999
re : algorithme python nombres parfaits 02-11-17 à 14:23

Si si mais quand je mets return à la place de print, cela me donne le message d erreur suivant :
File "C:\Users\tyodo_000\Desktop\Evangeline\info !!!!.py", line 12
    print ("True")
       ^
SyntaxError: 'return' outside function

Posté par
alb12
re : algorithme python nombres parfaits 02-11-17 à 14:41

regarde ici (Xcas pour firefox avec la syntaxe python)

Posté par
alb12
re : algorithme python nombres parfaits 02-11-17 à 14:46

oups desole l'indentation n'est pas reproduite.
reprends l'indentation dans le programme ou ... laisse tomber !

Posté par
alb12
re : algorithme python nombres parfaits 02-11-17 à 16:01


Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> def parfait(n):#parfait(n) retourne True si le nombre est parfait ou False sinon
    s=0
    for i in range(1,n//2+1):
        if n % i ==0 :
            s=s+i
    if s==n:
        return True
    else:
        return False

>>> parfait(27)
False
>>> parfait(28)
True
>>> 

Posté par
vanvan1999
re : algorithme python nombres parfaits 02-11-17 à 17:21

Ok merci !!



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1719 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !