Bonjour,
Je vous propose un nouvel élément à utiliser : Nombres Entiers
Vous entrez un nombre et le programme trouvera tous les nombres entiers compris entre 0 et votre nombre!
Qu'en pensez-vous ?
Bonjour,
Je vous propose un nouvel élément à utiliser : Nombres Entiers
Vous entrez un nombre et le programme trouvera tous les nombres entiers compris entre 0 et votre nombre!
Qu'en pensez-vous ?
Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
Un peu de programmation réseau ?
Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.
Hoe,
Quel est l'intérêt ?
En plus, la recherche des premiers est loin d'être optimale :
- On cherche de 0 à N, or un nombre < 2 ne peut pas être premier
- le test
laisse passer tous les nombres, sauf les multiples de 2 ET 5 en même temps !
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(nombre % 2 != 0 || nombre % 5 != 0)
- Puis, on va faire le test de division avec tous les nombres < N, donc y compris les nombres pairs.
- Et cette fonction trouve 1 comme premier !
Bref, copie à revoir d'urgence.![]()
D'accord, il s'agit de trouver les nombres premiers.
Parce que là, il y a écrit « nombres entiers ». Trouver tous les nombres entiers entre 0 et n, c'est sympa mais ce n'est pas difficile ! :-)
Keo,
C'est ce que je me suis dit aussi, mais j'avais déjà de quoi répondre.![]()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 bool est_premier(int nombre) // verifie si nombre est multiple 2 ou 3 puis verifie si nombre est multiple de p = 6 i ± 1 tant que p * p <= nombre { if (nombre < 2) return false; int p = 2; int s = 1; int i = 0; while (p * p <= nombre) { if (nombre % p == 0) return false. if (p == 2) ++p; else {if (s == 1) ++i; p = 6 *i + (s = - s);} } return true; }
Garder tous les premiers déjà trouvés mais ne pas s'en servir lors de la recherche des autres?
Passer un vecteur par valeur?
La bonne méthode pour ce problème, c'est le crible d'Erathostène.
Une alternative très simple pour calculer les nombres premiers entre 2 et 4 milliards et quelques ...enfin je crois..😉
Sur ma tablette Nexus 10 donne les premiers inférieurs ou égaux à 500000 en moins de 2 secondespremier.c
Désolé, je croyais avoir inséré dans PJ mais non😱
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 #include <stdio.h> #include <stdlib.h> #include <math.h> /* Générateur de nombres Premiers */ /* Inférieurs ou égaux à 4294967295 */ /* Auteur : Lemariey Jean-Philippe */ int main(int argc, char *argv[]) { div_t resultat; int i = 3; int j = 1; int n = 0; int r = 0; double m = 0.0; printf ("Ceci est un générateur de nombres Premiers inférieurs ou égaux à N \n"); printf("Votre valeur de N svp : "); scanf("%i", &n); printf("\n 2 "); while (i <= n) { j = 2; resultat = div(i, j); r = resultat.rem; m = sqrt((double)i); // pas la peine de chercher au delà de // racinecarrée i while (j <= m && r != 0) { j++; resultat = div(i, j); r = resultat.rem; } if (j > m) { printf("%d ", i); } i += 2; //On ne teste que les nombres impairs } return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 #include <stdio.h> #include <stdlib.h> #include <math.h> /* Nombres Premiers */ /* Inférieurs ou égaux à N */ /* Auteur : Jaouad ALLAMI */ int main(int argc, char *argv[]) { int i = 3; int j = 1; int n = 0; int r = 0; div_t resultat; double m = 0.0; printf (" Nombres Premiers inferieurs ou egaux a N \n"); printf("Saisir la valeur N svp : "); scanf("%i", &n); printf("\n 2 \t"); while (i <= n) { j = 2; resultat = div(i, j); r = resultat.rem; m = sqrt((double)i); // pas la peine de chercher au delà de // racinecarrée i while (j <= m && r != 0) { j++; resultat = div(i, j); r = resultat.rem; } if (j > m) { printf("%d \t", i); } i += 2; //On ne teste que les nombres impairs } //return 0; printf("\n\n vous avez terminer : "); printf("\n\n tapper un nombre pour sortir : "); scanf("%i", &j); }
Programme C dans la section C++ ...
En C++, de nos jours, une table de nombres premiers, ça se calcule à la compilation
(enfin, je ne suis pas sûr que ce soit possible, en fait. Avis aux amateurs de défis).
Et à quelques lignes près, c'est l'exacte reprise du précédent…
Partager