IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Afficher l'inverse d'un nombre premier.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 172
    Par défaut Afficher l'inverse d'un nombre premier.
    Bonjour,

    Je voudrais faire un programme qui affiche les nombres premiers et leurs inverses. J'ai déjà la fonction qui permet de calculer si un nombre est premiers ou non mais je ne sais pas comment m'y prendre pour afficher correctement l'inverse.
    Car certain nombre nombres obtenus auront des développements décimaux périodique de plusieurs dizaine de chiffres, voir plus, et ce qui m’intéresse justement c'est d'afficher ces développement décimaux.

    Comment est ce que vous vous y prendriez ?

    Merci.

  2. #2
    Membre actif Avatar de Mipwiq
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 42
    Par défaut
    Si tu veux avoir l'inverse d'un nombre avec une bonne précision tu peux utiliser le type double.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void afficheInverse(int nombrePremier)
    {
      double resultat;
     
     resultat = 1.0 / nombrePremier;
     printf("%f\n", resultat); // le flag %f de printf permet d'afficher des nombre a virgule flotante
    }
    Si tu ne comprends pas quelque chose hésite pas à le faire savoir.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 172
    Par défaut
    J'ai essayé comme ça mais le résultat ne me convient pas, par exemple si je fais :
    1/43 => 0.023255813953488372000000000000

    alors que j'aimerai un résultat du genre de la calculatrice de windows :

    1/43 => 0,0232558139534883720932325581395

  4. #4
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 792
    Par défaut
    Hello,

    Si cette précision ne te suffit pas, tu vas devoir passer par une bibliothèque spécialisée, telle que gmp par exemple (que je n'ai jamais utilisé), a moins que l'api windows propose des fonctions mathématiques spécialisées....

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 172
    Par défaut
    Ok merci je vais étudier ça.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 490
    Par défaut
    Sans aller jusqu'à GMP, si tu souhaites obtenir avec une précision arbitraire le résultat en décimal d'un nombre rationnel, donc le quotient de deux nombres entiers, il te suffit d'appliquer le même algorithme que lorsque tu effectues une division sur papier, à savoir effectuer le quotient du poids le plus fort, soustraire le résultat puis descendre la tranche suivante, en décalant en fait la différence vers la gauche en la multipliant par dix :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    /*  Division décimale de nombres rationnels.  */
    /* Obsidian pour Developpez.net - 5 sept 2013 */
     
    #include <stdio.h>
     
    int main (void)
    {
        /* a doit toujours être inférieur à 10×b */
     
        long int a=1, b=2; /* a : numérateur ; b : dénominateur */
        long int q=0, r=0; /* q : quotient ;   r : reste        */
     
        unsigned int count = 30; /* Précision */
     
        do
        {
            q=a/b;
            r=a%b;
     
            putchar ('0'+q);
            a=(a-q*b)*10;
        }
        while (count-->0 && r!=0);
     
        return 0;
    }

    L'avantage ici est que a reste toujours inférieur à b, et en plein milieu de son domaine de définition. On peut donc faire itérer la boucle indéfiniment sans divergence. (ânerie)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une fonction implémentée en Java pour afficher les nombres premiers
    Par autran dans le forum Codes sources à télécharger
    Réponses: 2
    Dernier message: 01/05/2015, 16h45
  2. Réponses: 37
    Dernier message: 16/12/2013, 09h20
  3. premier nombre premier superieur à m=10^100+1
    Par azman0101 dans le forum Mathématiques
    Réponses: 4
    Dernier message: 17/04/2003, 03h23
  4. [VB6]fonction inverse de Hex (nombres hexadécimaux)
    Par Guigui_ dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/10/2002, 19h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo