Soyez le premier à donner votre avis sur cette source.
Vue 2 221 fois - Téléchargée 89 fois
#include <stdio.h> #include <math.h> #include <stdlib.h> int premier(int x); int divisible(double x, int a); void listnb(int a){ /* Fonction de listage des nombres premiers inférieurs à a) */ int b; int u; /* Definition du fichier de sortie */ FILE *sortie; b=3; u=1; /* Ouverture du fichier 'sortie.txt' si il n'existe pas il est crée, si il existe les données précendentes sont effacées */ sortie=fopen("sortie.txt","w"); /* Boucle d'affichage des nombres premiers */ printf("1 : 2 \n"); fprintf(sortie,"1 : 2 \n"); while(b<=a){ /* On vérifie si b est premier*/ if (premier(b)==1){ u++; /* Si oui, on affiche le rang du nombre et le nombre */ printf("%d : %d \n",u,b); /* Et on inscrit tout dans le fichier */ fprintf(sortie,"%d : %d \n",u,b);}; b+=2 ; }; fclose(sortie); }; int main(int argc, char *argv[]) { int a; printf("Prime Numbers Generator v1.0b3 by Yann JOUANIN\n"); printf("Entrer le nombre auquel s'arretera la recherche de nombres premiers : \n"); /* On acquiert par le clavier le nombre où on va s'arrêter*/ scanf("%d",&a); /* On liste les nombres premiers jusqu'à ce nombre */ listnb(a); return 0; } int divisible(double x, int a){ double c; double d; double b = x/a; d = floor (b); c=b-d; if (c==0) { return (1); } else { return (0); } }; int premier(int x) { int premiern; int b; if (x==2) { return (1);} else { if ((x & 1) == 0){ return (0);} else { premiern=0; b=3;}} while((premiern==0)&(b<sqrt(x))){ premiern=divisible(x,b); b=b+2;} if (premiern==1||x==1){ return (0);} else { return (1);} };
x & 1 retourne true si le dernier bit est 1 (donc x est impaire) false sinon
(corrigez moi si je me suis trompé)
pour pousser, il aurait aussi pu faire : if(!(x & 1)) return 0;
return (0);}
ce simplifie en
if ((x & 1) == 0){
return (0);}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.