Python...nombre premier

Discutez d'informatique ici !
Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 20:42

Python...nombre premier

par Rockleader » 12 Juin 2012, 16:31

Bonjour, je cherchais à me faire un programme qui aurait pour but de m'afficher tout les nombres premiers compris entre 1 et 150. Manière d'avoir un crible d'ératostène fait maison quoi...

Bref voilà le code...lorsque j'essaie de le lancer, le .2 de ma version 3.2 de python se surligne en rouge...du coup je me demande s'il y a un problème dans mon code ou bien si c'est parce que j'ai utilisé des termes n'apparaissant pas dans cette version de python...bref je vois pas pourquoi le programme bloque, à la main il passe donc ça doit venir du code...Merci pour votre aide.

Code: Tout sélectionner
>>> def PGCD(a,b):
                return b,abs(a-b)

       
>>> a=1
>>> b=1
>>> a=int(a)
>>> while a<150:
   if PGCD(a,b)!=1:
      a=a+1
   else:
      print(a)
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !



Joker62
Membre Transcendant
Messages: 5028
Enregistré le: 24 Déc 2006, 21:29

par Joker62 » 12 Juin 2012, 20:40

Hello !

Moi je ne comprends pas ta fonction PGCD...

Il doit pas y avoir un truc du genre

Si a % b == 0 alors return a Sinon return PGCD(a,a%b) ?

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 20:42

par Rockleader » 12 Juin 2012, 20:57

Joker62 a écrit:Hello !

Moi je ne comprends pas ta fonction PGCD...

Il doit pas y avoir un truc du genre

Si a % b == 0 alors return a Sinon return PGCD(a,a%b) ?



Euh, non j'ai déjà utilisé cette fonction là dans un programme qui se contentait de calculer un pgcd, et la fonction marchait bien...je l'ai juste recopier...l'erreur ne vient pas de là...
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

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

par fatal_error » 12 Juin 2012, 21:16

def PGCD(a,b):
return b,abs(a-b)

peux-tu expliquer la syntaxe, je comprends pas?
la vie est une fête :)

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 20:42

par Rockleader » 12 Juin 2012, 23:09

fatal_error a écrit:peux-tu expliquer la syntaxe, je comprends pas?



Ben ça fait un moment que j'ai fait ça...mais si je me souviens bien def c'est pour définir la fonction PGCD.

Quand à abs je crois que ça retourne la valeur absolue...



Le programme que j'avais fait à la base calculait le PGCD de deux nombres donné par l'utilisateur, je vous le donne, vous verrez il fonctionne bien celui là...

Code: Tout sélectionner
while 1:
        print("===Calcul de PGCD===")
        print("Rappel:Si a et b sont deux entiers naturels non nuls, Alors parmi tous les diviseurs commun à a et b, le plus grand est noté PGCD(a,b)")

        def PGCD(a,b):
                return b,abs(a-b)

        a=input("Rentrez un nombre a:")
        b=input("Rentrez un nombre b:")
        a=int(a)
        b=int(b)
        c,d=a,b
        while a!=b:
                a,b=PGCD(a,b)

        if b==1:
                print("Les nombres",c,"et",d,"sont premiers entre eux car leur PGCD vaut 1")
        else:
                print("Le PGCD des nombres",c,"et",d,"vaut",b,".")
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

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

par fatal_error » 12 Juin 2012, 23:25

ouais donc en gros t'as pas compris l'algo.

et c'est pas moi qui vais te l'expliquer.
Mais ce qui est sur, c'est que la fonction PGCD a été nommée par un goret.

Hormis le fait que ca soit écrit en majuscule toussa.
La fonction PGCD aurait du être

Code: Tout sélectionner
def Iter_PGCD(a,b):
  return b,abs(a-b)

def PGCD(a,b):
  while a!=b:
    a,b=Iter_PGCD(a,b)
  return b


parce que bon, une fonction PGCD qui retourne deux nombres... :lol3:
la vie est une fête :)

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 20:42

par Rockleader » 12 Juin 2012, 23:33

Bon je vais repasser tout ça alors...
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 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