Intervalle, entiers et divisibilité en langage c

Fermé
Sunshine9 Messages postés 7 Date d'inscription samedi 26 octobre 2013 Statut Membre Dernière intervention 27 octobre 2013 - 26 oct. 2013 à 16:27
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 26 oct. 2013 à 17:09
Bonjour,

J'ai reçu une consigne et je dois faire un programme qui affiche tous les entiers de
l'intervalle [145,256] qui ne sont divisibles ni par 2, ni par 3, ni par 5 (un par ligne) et il doit indiquer le nombre d'entiers affichés.

Voici le programme que j'ai fais, mais il n'affiche que les chiffres de 145 à 256, je n'ai pas encore essayer d'indiquer le nombre d'entiers affichés :

#include <stdio.h>

int main(){

int entier=145, divisible2, divisible3, divisible5;

divisible2 = entier/2;
divisible3 = entier/3;
divisible5 = entier/5;

while ((entier >= 145) && (entier <= 256))
{
if ((entier != divisible2) && (entier != divisible3) && (entier != divisible5))
{
printf(" %d \n", entier);
}
entier = entier + 1;
}

return 0;}



1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
26 oct. 2013 à 17:09
L'algorithme est faux...
divisible2 = entier/2;
divisible3 = entier/3;
divisible5 = entier/5;

Cela va calculer divisible2, divisible3 et divisible5 une fois puisqu'ils sont en dehors de la boucle while. Il faut réactualiser le calcul pour chaque nouvel variable entier. Mais tu n'en as pas besoin de ces variables.

if (entier != divisible2)
Cela compare entier entier avec divisible2. Rien à voir avec ce que tu souhaites faire (si entier est divisible par 2). Un nombre est x si le reste de la division est nulle. Donc : if(entier%2 != 0) signfie si entier n'est pas divisible par 2. A toi de jouer avec le reste.

Pour le nombre de variables affichés, un simple compteur fera l'affaire.

Cdlt,
2