Bonjour, je veux faie un programme en C qui demande a l'utilisateur un nombre puis lui dit ce dernier est premier ou pas. J'y arrive pas si vous voulez bien m'aider
Un nombre premier est un nombre qui n'est divisible par aucun nombre apars 1 et lui-même.
Il faut tester avec chaque entier inférieure à celui entrer par l'utilisateur et supérieure à 1, si le reste de la division (nombreEntre/nombreInferieur) à un reste ou non. Si au moins une division n'a pas de reste, le nombre n'est pas premier.
Si tu veux plus d'aide, poste ton code.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles- ♡ Copying is an act of love.
Bon déjà un petit rappel ne fait pas de mal: un nombre premier n'est divisible que par exactement 2 entiers naturel. Autrement dis il n'est divisible que par un et lui même ( 1 n'est pas un nombre premier) donc il faut prouver qu'il n'as aucun diviseur autre que 1 et lui même et là pas le choix faut tous les essayer! Cependant il existe un propriété qui nous dis qu'un nombre non premier à au moins un diviseur inférieur à la racine carré de lui même. Cela réduit déjà pas mal les recherches
En fait je dois mettre la boucle for que tu m'a donné, puis ensuite a l'interieur, je dois verifier que la division de nombreentre par i ( qui diminue a chaque fois ou augmente) n'a pas de reste. Faut pas que je mette une condition if a l'interieur de la boucle ? ( pour savoir que si ya un reste ca s'arrete et le nombre est premier).
Voici mon code, pouvez me le corriger?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
int enumber,i;
printf("Please enter the number:\n");
scanf("%d",&enumber);
for(i=enumber-1;i!=1;i--) {
if(enumber%i=0)
printf("The number is not prime");
else
printf("The number is prime");
Oui mais la tu fais mouliner ton pc pour rien! Version optimisée:
for(i=3; i<sqrt(nombreEntre); i =+ 2)
Un appel à la fonction sqrt à chaque tour de boucle, c'est de l'anti-optimisation.
Bien sur suis je bete xD mais il ne faut l'appeler qu'une fois! Juste avant le for il faut faire ce calcul et dans ce cas il y a une réelle optimisation!:
nombreLimite = sqrt(nombreEntre)
for(i=3; i<nombreLimite; i =+ 2)
if(enumber%i=0) 2 '==' sinon ça marche pas.
Tu as oublier un accolade.
Aussi ton code enumber-2 messages. Le mieux serait un break et un seul if. Mais le plus simple serait d'utiliser un variable qui dit si au mois un nombre est premier.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int enumber,i,o=0;
printf("Please enter the number:\n");
scanf("%d",&enumber);
for(i=enumber-1;i!=1;i--)
if((enumber%i)==0)
o=1;
//[..] les if
return(0);
}
Si c'est pour un devoir à rendre, y a beaucoup mieux comme solution, essaye avec le break.
Citation : guigui2leretour
nombreLimite = sqrt(nombreEntre)
for(i=3; i<nombreLimite; i =+ 2)
Evite de poster ce genre de code. Si le nombre entrer est inférieure à 9, on entre même pas dans la boucle.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles- ♡ Copying is an act of love.
#include <stdlib.h>
#include <math.h>
int main(void)
{
int enumber,i,prime=1;
printf("Please enter the number:\n");
scanf("%d",&enumber);
for(i=enumber-1;i!=1;i--) {
if(enumber%i==0)
{
prime = 0;
break;
}
}
if(prime)
printf("The number is prime");
else
printf("The number is not prime");
return(0);
}
Voilà ton code mais pense à ma ptite optimisation sa fait plus économe
Ahhhh en fait le break permet d'arreter la boucle une fois qu'on trouve un nombre qui divise notre nombre entré ?? Pour que la variable ne change pas de valeur apres si un autre nombre ne le divise pas ?
@ @che: mais c'est voulu! Réfléchi en dessous dessous de 9 les seul nombres non premiers sont 4,6,8 or ce sont tous des multiple de 2 et si on suis mon algo on test pour 2 avant de rentrer dans la boucle!
Hey tout le monde alors voilà on me demande de créer une fonction chose que je n'ai jamais sur C. Mon code ne marche pas je ne comprends pas.
Il s'agit d'un algo qui étant donné un nombre n renvoie 1 si il est premier 0 sinon. Je ne sais pas le faire car ne je ne connais la sémantique C concernant les fonctions, svp de l'aide.
#include <stdio.h>
int main () {
int est_premier(int n, int i) {
printf("Entrez un nombre entier nous allons vérifier s'il est premier ou non:\n");
scanf("%d", &n);
for (i= n-1; i!=1; i--) {
if (n%i == 0) {
printf("1");;
break;
} else {
printf("0");
}
}
return (0);
}
}
Lis bien le sujet dont j'ai déjà posté le lien. Ensuite crée ton sujet, si tu as le temps essaye de faire un petit tuto en C pour savoir comment faire.
First solve the problem. Then, write the code. ~ John Johnson
Mon sujet est en lien avec celui ci donc je ne vois pas l'interet de faire des doubles.
C'est pour éviter que les gens qui ouvrent la discussion ne la lisent inutilement depuis le début, comme je viens de le faire à l'instant (5 minutes de perdues !)
(Dans la nouvelle discussion qui concernera ton programme, on notera peut-être que le message d'erreur suggère (il me semble) un problème à la compilation. Tu utilises quel compilateur ? Avec un IDE ou en ligne de commande ? Tu as déjà réussi à compiler des programmes ? Mais bon, on verra tout ça dans la discussion adaptée.)
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.