Bonjour
J´ai un problème avec python.
J´ai commencé un programme simple pour m´exercer. C´est un programme qui test si un nombre est premier ou pas en le divisant par tous les nombres.
Voila le problème: le programme doit tester si la division tombe juste ( sans chiffre après la virgule) , et bien je ne sais pas comment tester si il y a quelque chose derrière la virgule ou pas.
J´avais fait le même programme sur ma calculette texas instrument en TIBASIC, la il y a une fonction qui permet de prendre seulement ce qu´il ya derriere la virgule. J´avais fait: si la partie décimale = 0:la division tombe juste.
Existe il un module/une fonction du même genre avec python?
voila mon code:
nombre=1.
diviseur=1.
resultat=0.
compteur=0
while nombre<100:
----resultat=nombre/diviseur
----if ??????? #si le résultat tombe juste sans chiffre après la virgule alors. Ce que je n´arrive pas a faire.
compteur=compteur+1 #le compteur compte le nombre de fois que la division tombe juste
----if compteur>1: # un nombre premier ne peut se diviser en tombant juste que 2 fois une fois si il est divisé par lui même et une fois si il est divisé par 1. Si il est divisable plus de fois il n´est pas premier je passe donc au nombre suivant.
--------nombre=nombre+1 # nombre suivant
--------diviseur=1
----if diviseur>((nombre+1)/2): # si le diviseur dépasse la moitié du nombre a testé sa ne tombera pas juste pour la suite sauf pour le nombre meme. Je passe donc au nombre suivant.
--------if compteur==1: #si la division n´est tombé juste que une seul fois c´est un nombre premier,
------------print nombre # donc je l´affiche.
--------nombre=nombre+1 #nombre suivant
--------diviseur=1
diviseur=diviseur+1
Je suis vraiment bloqué sur ce truc mais petetre que la solution est sous mes yeux ^^.
Pouvez vous m´aider?
merci d´avance
Cynox
je suis d'accord tu fais ta division, a/b et après tu fais a%b et si le resultat de a%b est 0, c'est qu'il n'y a rien après la virgule au resultat de a/b!
Merci pour toutes vos réponses!
J´ai finalement fait comme le proposait bluestorm.
voila ce que j´ai rajouter dans mon codes:
.... if nombre == (int((nombre/diviseur))*diviseur): ....
Sa marche très bien.
Mais j´ai vu qu´il i y des méthodes plus performantes aussi ^^!
Merci a tous!
Cynox
Pour ce qui verront ce message a l'avenir, en rencontrant moi même ce problème j'ai tout simplement créer une autre variable et ait pris l'entier de la valeur a vérifier puis j'ai vérifier qu'elle était bien égal à la première. Ca donne :
Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention. Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé. Pour plus d'informations, nous vous invitons à lire les règles générales du forum
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Python c'est bon, mangez-en.