Générer les nombres premiers entre deux bornes

Résolu/Fermé
ess - Modifié le 20 avril 2020 à 11:44
 ess - 20 avril 2020 à 16:18
Bonjour,

svp j'aimerais qu'on m'aide sur cet exercice. Ma difficulté est au niveau du contrôle qu'on doit faire pour afficher le message lorsqu'il n'y a pas de nombre premier dans l'intervalle

Ecrire un programme qui affiche tous les nombres premiers compris entre les deux bornes, et qui lui affiche un message s’il n’y a pas de nombres premiers sur l’intervalle donné.Exemple : s’il donne comme borne inférieur 98 et supérieure 100, dite lui qu’il n’y a pas de nombre premier compris entre 98 et 100.
Voici ce que je propose:
#include <stdio.h>
#include <stdlib.h>
int main()
{

    int x,y,i,j,c;
    printf("entrer la borne inferieur :");
    scanf("%d",&x);
    printf("entrer la borne superieur :");
    scanf("%d",&y);

    for(i=x; i<=y; i++)

    {
        c=0;
        for(j=1; j<=i; j++)
        {
            if(i%j==0)
            {
                c=c+1;
            }

        }
        if(c==2)
        {
            printf("%d est premier\n",i);
        }
    }

    printf("\n il ny a pas de nombre prmier entre %d et %d",x,y);
    return 0;
}

2 réponses

zipe31
Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 590
20 avril 2020 à 10:58
Salut,

À lire…

0
Dalfab
Messages postés
653
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
25 mai 2022
89
20 avril 2020 à 13:55
Bonjour,

Tu proposes une solution. A nous de dire quoi? Qu'elle ne fonctionne pas?
Peut-être l'as-tu vu aussi. Elle énumère les nombre premiers vus (et ça n'est pas demandé) et quoi qu'on entre, elle finit par toujours écrire qu'il n'y a pas de nombre premier dans l'intervalle.
il faut juste ajouter que ce message ne doit être écrit que SI on est JAMAIS passé par le cas où la variable
c
vaut 2 après la boucle d'analyse. Peut-être as-tu besoin d'une variable supplémentaire pour se rendre compte qu'on a JAMAIS
c
qui vaut 2.
0
Merci pour les remarques!!
enfaite c'est pas une proposition de solution c'est ce que j'ai essayer de faire mais qui ne marche pas pas parfaitement comme vs l'avez remarqué.
est ce possible d'avoir un petit aperçus visuel de ce que vous avez expliqué?
0
Dalfab
Messages postés
653
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
25 mai 2022
89 > ess
20 avril 2020 à 14:24
#include <stdio.h>
#include <stdlib.h>
#include <sdbool.h>                             // on a besoin d'une variable booléenne
int main()
{

    int x,y,i,j,c;   // dur dur, il faut se souvenir de toutes ces abréviations .....
    bool nombre_premier_a_ete_vu = false; // on a besoin d'une variable booléenne (cette variable a un nom moins abrégé)
    printf("entrer la borne inferieure :");
    scanf("%d",&x);
    printf("entrer la borne superieure :");
    scanf("%d",&y);

    for(i=x; i<=y; i++)
    {
        c=0;
        for(j=1; j<=i; j++)
        {
            if(i%j==0)
            {
                c=c+1;
            }
        }
        if(c==2)
        {
            printf("%d est premier\n",i);
            .... on a donc vu un nombre premier ....
        }
    }
    if ( .... on a jamais vu de nombre premier .... )
        printf("\nIl n'y a pas de nombre premier entre %d et %d",x,y);
    return 0;
}
0
ess > Dalfab
Messages postés
653
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
25 mai 2022

20 avril 2020 à 16:18
Merci beaucoup pour l'aide!!!!
Le programme marche maintenant !!

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main()
{

    int x,y,i,j,c;
    bool nombre_premier_a_ete_vu = false;
    printf("entrer la borne inferieure :");
    scanf("%d",&x);
    printf("entrer la borne superieure :");
    scanf("%d",&y);
    for(i=x; i<=y; i++)
    {
        c=0;
        for(j=1; j<=i; j++)
        {
            if(i%j==0)
            {
                c=c+1;
            }

        }
        if(c==2)
        {

            printf("%d est premier\n",i);
            nombre_premier_a_ete_vu=true;
        }
    }
    if (nombre_premier_a_ete_vu==false)
        printf("\nIl n'y a pas de nombre premier entre %d et %d",x,y);
    return 0;
}
0