Voici un de mes premiers messages sur ce forum.
J'aime beaucoup les nombres premiers, je trouves que ces nombres sont facinants. ( chacun fait ce qu'il peut :zen: )
Pour calculé des nombres premiers j'utilise cette algorithme:
je prend un nombre, je le divise par tout les nombres, un a un de ma liste, jusqua la racine du nombre tester. Si aucun resultat des divisions ne sont premier alors le nombre tester et un nombre premier et je passe au suivant.
J'ai programmer cela en C.
au debut je crée un fichier qui contient uniquement un nombre premier : 2, qui servira de premier test pour tout les autre
#include
int main ( void)
{
int deux = 2;
FILE * fichier;
fichier = fopen ("c:/fichier.txt","w");
if (!fichier)
{
printf("pb!");
return 1;
}
fprintf(fichier,"%d\n",deux);
fclose (fichier);
return 0;
}
apres je lance le programme enoncé plus haut.
#include
#include
int main (void)
{
int fin_test = 10000000000;
int i;
int reste;
int nb;
int fin;
int racine;
FILE * fichier;
fichier = fopen("c:/fichier.txt","a+");
if (!fichier)
{
printf("pb!\n");
return 1;
}
fseek(fichier,0,SEEK_END);
fin = ftell(fichier);
for (i=3;i((sqrt(i))+1)))
{
fseek(fichier,0,SEEK_END);
fin = ftell(fichier);
printf("%d\n",i);
fprintf(fichier,"%d\n",i);
break ;
}
}
}
fclose(fichier);
return 0;
}
ce programme n'a rien de parfait... je travail a sont optimisation actuelement.
( c'est juste si ca interesse quelqu'un )
entre temps j'ai découvert un livre au CDI de mon établissement : Merveilleux nombres premiers de Jean-Paul Delahaye.
( c'est mon livre de chevet depuis
il y a un passage que je n'arrive pas a saisir :
Une méthode pour stocker des nombres premiers consiste à écrire les nombres sous la forme 30k + i, avec i compris entre 0 et 29. Dans une telle écriture, seuls les nombres pour lesquels i vaut 1, 7, 11, 13, 17, 19, 23 ou 29 peuvent être premiers: en effet, pour toutes les autres valeurs de i,on peut factoriser l'expression 30k + i, par exemple 30k + 5 = 5 ( 6k + 1 ). Avec un octet de mémoire ( unité de huit > valant 0 ou 1 ), au lieu de coder un seul nombre premier, on code pour ces huit valeurs de i, par un 1 ou un 0, la nature première ou non de huit nombres dans une tranche de 30: on obtient donc une compression d'un facteur 30. En utilisant 210 à la place de 30, on code une tranche de longueur 210 avec 6 octets ( facteur de compression 35).
Je nage ...... merci de m'aider a comprendre.
Ou si quelqu'un a une autre idée pour fair une liste de nombres premiers.
Merci d'avance pour vos réponses.
