OVH Cloud OVH Cloud

cherche code source

2 réponses
Avatar
Socrate
bonjours je cherche le code source de programmes permettant de trouver des
nombres premiers mais je ne trouve pas grand chose sous google
merci d'avance

2 réponses

Avatar
Fabien LE LEZ
On Wed, 23 Jun 2004 08:26:19 +0200, "Socrate"
:

bonjours je cherche le code source de programmes permettant de trouver des
nombres premiers mais je ne trouve pas grand chose sous google


Uh ?
Y'a l'air au contraire d'avoir pas mal de choses :

http://www.google.com/search?q=%22prime+numbers%22+%22C%2B%2B%22&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8

Après, il faut savoir ce que tu cherches exactement : quelques
"petits" nombres premiers ? Beaucoup de petits nombres premiers ? Des
nombres premiers assez gros pour servir dans les algorithme de
cryptage ?

Le mieux est d'aller sur fr.comp.algorithmes pour connaître le nom de
l'algorithme qui convient à ton problème, puis de rechercher ce nom
sur Google.


--
schtroumpf schtroumpf

Avatar
Alexandre
"Socrate" a écrit dans le message de
news:40d9228b$0$656$
bonjours je cherche le code source de programmes permettant de trouver des
nombres premiers mais je ne trouve pas grand chose sous google
merci d'avance


un peu HS ici, ça concerne plutot fr.comp.algorithmes.


Un algo simple mais pas très efficace (très bien pour de petits nombres) :
le cribble d'erathostène (pas sur de l'orthographe).

Le principe : tu considère que tous les nombres sont premiers.
Tu sais que 2 est premier.
Tu calcules les multiples de 2. Ils ne sont, par définition, pas premiers.
Et ainsi de suite...

Ce qui donnerait en C++ :

class Crible
{
std::vector<bool> EstPremier;
public:
Crible(int NMax):EstPremier(NMax+1,true){}
void Calcule();
void Affiche()
{
for(int i=2;i<EstPremier.size();i++)
if(EstPremier[i])
cout<<i<<';';
}
};

void Crible::Calcule()
{
for(int i=2; i < EstPremier.size() / 2 ; i++) // la moitié suffit
{
//--- calcule tous le multiples de i : ils ne sont pas premiers !
for(int j=2; (i*j)<EstPremier.size(); j++)
EstPremier[i*j] = false;
}
}

et voila, en peu de lignes, comment calculer n nombres premiers. Attention :
algo assez long si tu en veux beaucoup !!!
Mais à ma connaissance c'est le plus simple à comprendre et à implémenter.