Prime numbers generator

Soyez le premier à donner votre avis sur cette source.

Vue 2 221 fois - Téléchargée 89 fois

Description

Ce petit programme très simple permet de sortir sous forme d'un fichier texte le liste des nombres premiers jusqu'à un nombre spécifié ainsi que leur rang.

Source / Exemple :


#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);}       };

Conclusion :


Pour avoir la dernière version http://www.tpe-crytpographie.fr.st

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
9
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
19 novembre 2003

vs etes kan meme doué les gars.
Messages postés
338
Date d'inscription
jeudi 22 août 2002
Statut
Membre
Dernière intervention
14 juin 2005

il fait une comparaison binaire sur le dernier bit de x
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;
Messages postés
1
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
31 octobre 2003

TU peut m'expliquer là JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
if (divisible(x,2)==1){
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.