pr
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

pr



  1. #1
    frankcity

    pr


    ------

    Bonjour svp j’aimerais que vous m’aidiez a corriger ce programme.
    soit a écrire un programme permettant de detecté si un un nombre est premeir ou pas

    Code:
    #include<stdio.h>
    #include<math.h>
    main()
    {int i ,k ,n;
    k=0;
    do
    {printf ("donnez un entier superieur a 2");
    scanf ("%d",&n);
    }
    while (n<=2);
    for (i=1 ;i< (n%2); i++)
    {if (n mod i= o) k=k+1;}
    if (k>=1)
    printf ("pas premier");
    else
    printf ("premier");
    }

    -----

  2. #2
    Paraboloide_Hyperbolique

    Re : pr

    Citation Envoyé par frankcity Voir le message
    Bonjour svp j’aimerais que vous m’aidiez a corriger ce programme.
    soit a écrire un programme permettant de detecté si un un nombre est premeir ou pas

    Code:
    {if (n mod i= o) k=k+1;}
    Bonsoir,

    Cette ligne est syntaxiquement incorrecte.

    1. La fonction que vous cherchez est probablement
    Code:
    double fmod (double numer, double denom);
    qui retourne le reste de la division de "numer" par "denom".
    2. L'opérateur de test d'égalité est "==" et non "=" qui l'opérateur d'assignation.

  3. #3
    whoami

    Re : pr

    Bonjour,
    Citation Envoyé par Paraboloide_Hyperbolique Voir le message
    1. La fonction que vous cherchez est probablement
    Code:
    double fmod (double numer, double denom);
    qui retourne le reste de la division de "numer" par "denom".
    Je ne pense pas que ce soit le cas, mais que frankcity ne connaît pas l'opérateur modulo en C %.

    Ainsi, dans
    Code:
    int a = 15;
    int b = 4;
    
    int m = a % b;
    se lit m = a modulo b, et donc, avec les valeurs initialisées, le résultat est 3.


  4. #4
    frankcity

    Re : pr

    Merci bien,
    Ainsi devrais je avoir ?

    Code:
    for (i=1 ;i< (n%2); i++)
    {if (n % i== o) k=k+1;}
    Mais apres avoir compilé je n'obtiens pas le resultat attendu.

    en effet voici mon algo :
    -entrer un nombre n
    - diviser ce nombre par tous les entier p pour p allant de 1 a n mod 2
    - si ce nombre par division par p produit un reste nul alors ce nombre n'est pas premier
    -sinon il est premier

    merci de m'aider a corriger ce programme

  5. A voir en vidéo sur Futura
  6. #5
    whoami

    Re : pr

    Bonjour,
    Citation Envoyé par frankcity Voir le message
    Merci bien,
    Ainsi devrais je avoir ?

    Code:
    for (i=1 ;i< (n%2); i++)
    {if (n % i== o) k=k+1;}
    Mais apres avoir compilé je n'obtiens pas le resultat attendu.

    en effet voici mon algo :
    -entrer un nombre n
    - diviser ce nombre par tous les entier p pour p allant de 1 a n mod 2
    - si ce nombre par division par p produit un reste nul alors ce nombre n'est pas premier
    -sinon il est premier

    merci de m'aider a corriger ce programme
    Commence par réfléchir un peu !

    ET retour à la base : papier + crayon, et suit ton programme pas à pas, en notant ce qu'il fait effectivement (c'est à dire évite de noter ce que tu penses qu'il fait).

    Tu verras très rapidement pourquoi ton programme ne fait pas ce que tu voudrais.

    Et pour finir : réfléchir à un algorithme AVANT de commencer à écrire le code, sinon on tombe dans le piège que tu n'as pas évité : faire à peu près n'importe quoi, en espérant que ça finisse par marcher en bidouillant au hasard.

  7. #6
    Chanur

    Re : pr

    Bonjour,
    Code:
    for (i=1 ;i< (n%2); i++)
    La condition de la boucle est forcément fausse.
    "n%2" signifie "n modulo 2", le reste de la division euclidienne de n par 2, soit 0 ou 1
    au départ i vaut 1 qui n'est inférieur ni à 0, ni à 1

    Même remarque que whoami : taper n'importe quoi au pif jusqu'à ce que ça marche est une méthode très, très, très longue pour écrire un programme ...
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  8. #7
    frankcity

    Re : pr

    OK ,Merci bien .