Je viens de rendre un projet de cryptage RSA, donc basé sur les nombres premiers ...
Voici l'algo :
y'a pas 36 solutions, pour un nombre N, faut tester s'il est divisibles par tous les nombres de 2 à N-1 !
s'il n'y a aucun nombre, alors il est premier.
2 améliorations:
une évidente : on travaille uniquement avec les nombres impairs
for(i = 3; i < N; i += 2) ...
la deuxieme, faut le savoir:
au lieu de s'arreter à N-1, on s'arrete à SQRT(N) (sa racine carré)
ben ouai, c'est comme ça, si on a rien trouvé jusqu'à sa racine, on en trouvera pas après !
du coup:
Code :
- // soit un unsigned long int N à tester
- int i, premier = 1;
- long racine = sqrt(N);
- for(i = 3; i <= racine; i += 2)
- {
- if((N % i) == 0) // si reste division == 0
- {
- premier = 0;
- break;
- }
- }
|
j'ai fait vite, mais je crois que c'est ça !
---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite