Partage
  • Partager sur Facebook
  • Partager sur Twitter

[python] la partie decimale d´un nombre

tester si une division tombe juste!

9 septembre 2008 à 21:11:24

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
  • Partager sur Facebook
  • Partager sur Twitter
9 septembre 2008 à 21:16:58

a % b donne le modulo de a / b
  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

10 septembre 2008 à 9:25:10

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!
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
10 septembre 2008 à 11:44:09

ICI on te donne tous les algos pour nombres premiers

:)
  • Partager sur Facebook
  • Partager sur Twitter
10 septembre 2008 à 11:58:37

Ou alors tu calcule (a/b)*b, et tu compares avec a.
  • Partager sur Facebook
  • Partager sur Twitter
13 septembre 2008 à 14:11:28

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
  • Partager sur Facebook
  • Partager sur Twitter
13 septembre 2008 à 15:52:02

par curiosité, tu as compris comment fonctionnait " l'astuce de bluestorm " ?
  • Partager sur Facebook
  • Partager sur Twitter
13 septembre 2008 à 16:49:26

Le modulo répond à ta demande.
  • Partager sur Facebook
  • Partager sur Twitter
15 septembre 2008 à 14:04:32

T'as pas besoin de rajouter le int. Pour répondre à MrGecko, ça m'étonnerait qu'il aie compris.
  • Partager sur Facebook
  • Partager sur Twitter
1 février 2024 à 17:51:36

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 :

a = valeur a vérifier

b = int(a)

if a == b:

         reste du code

  • Partager sur Facebook
  • Partager sur Twitter
1 février 2024 à 18:06:11

Bonjour,

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

Déterrage

Citation des 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

Liens conseillés

  • Partager sur Facebook
  • Partager sur Twitter