DETERMINATION DE NOMBRES PREMIERS

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 22 nov. 2003 à 22:17
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005 - 12 déc. 2003 à 00:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/18126-determination-de-nombres-premiers

kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005
12 déc. 2003 à 00:14
bah, c'est pas le + important...
miniviet Messages postés 2 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 11 décembre 2003
11 déc. 2003 à 10:00
Salut je débute en c++ mais je sé ke les nombres premiers sont defini a partir de 2 donc 1 n'est pas premier hihihi.
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005
28 nov. 2003 à 02:18
ca je pense que c'est le genre de "detail" dont on ne saura jamais ce qu'il faut comprendre vraiment ... Au choix de chacun ;-)
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
25 nov. 2003 à 13:13
Ouais mais qu'on on réalise la décomposition d'un nombre en facteur premier, on ne met pas 1. De plus, j'ai fais une recherche sur les nombres premiers (cf mes sources) et j'ai trouvé un article qui disait que 1 n'était pas premier.
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005
25 nov. 2003 à 01:38
ben il ne se divise que par 1 et par lui meme .... ;-D
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
24 nov. 2003 à 14:31
Exact, mais j'avis juste mis ce que j'avais vu vite fait. Quand à 1 je ne sais pas s'il est considérer comme nombre premier.
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005
24 nov. 2003 à 02:02
pardon, il faur mettre if (N>3) a la place de if(N>2)

ce test est la car 1 2 3 sont premiers, et 2 peux creer une erreur avec le test if (N%2) donc comme il me fallait exclure la valeur particuliere 2, autant exclure aussi 1 et 3 en les donnant tout de suite premiers ...
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005
24 nov. 2003 à 01:58
ymca2003> tu oublie une mega grosse optimisation : l'arret des qu'un diviseur est trouve...
-------------------
bool diviseur=FALSE;

if (N<0) N=-N; // d'apres la definition, -3 est un nombre premier non ???

if (N=0)
{
diviseur=TRUE; // 0 n'est pas divisible par lui meme
}
else
{
if (N>2)
if (N%2 != 0)
for (i=2;i<=sqrt(N) && diviseur==FALSE;i=i+1)
if (N%i==0) diviseur=TRUE;
else diviseur=TRUE;
}

printf("%d %s un nombre premier
",N,diviseur ? "n'est pas" : "est");
--------------------
je pense avoir gere pas mal de cas ;-)
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005
24 nov. 2003 à 01:39
euh .... je vois pas beaucoup de difference avec ton source sur les nombres parfaits ... ;-D

Rmadmann007, le roi des mahs .... ;-p
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
22 nov. 2003 à 22:17
Quelques optimisations possibles :
- stopper la boucle après racine carré de N : sqrt(N) au lieu de N/2
- ne pas diviser par les nombres pairs (sauf 2). Donc tester la division par 2 puis commencer la boucle à 3 et faire i+=2

bonne prog.
Rejoignez-nous