Nombres premiers : vérification à plusieurs

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Nombres premiers : vérification à plusieurs

Message par SPH »

Bon, j'ai tout lu et j'en ai mal la tête.
J'aime les maths mais là, je suis largué...

Vous êtes plus intelligent que moi ! :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Nombres premiers : vérification à plusieurs

Message par Ollivier »

Comment tu fais l'anguille...

On va faire simple :

(1)
2 + 3 = 5
c'est premier ? oui

(2)
2*3 + 5 = 11
c'est premier ? oui

(3)
2*3*5 + 7 = 37
c'est premier ? oui

(4)
2*3*5*7 + 11 = 221
c'est premier ? non car 221 = 13 * 17

Donc on pose Z tel que :
2*3*5*7 + 11*Z = s
et on cherche les Z tel que s est un nombre premier.
Qu'est-ce qu'on obtient comme liste ?
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Nombres premiers : vérification à plusieurs

Message par Ollivier »

Je n'ai pas beaucoup de réponse pour commencer d'un truc simple dans le dernier message.
En attendant, je reviens à ce qui est moins simple.
Donc, voici, en condensé, l'interprétation des gaps entre le nombre premier 5 et le nombre premier 257 :

Code : Tout sélectionner

11111121211122121121231111151213122122131114411121322
Alors, pour appliquer :

1) il faut s'imaginer des jetons de 2 types : les types +2 et les types +4.
2) On aligne ces jetons en les alternant, en commençant par '+2' ça donne +2+4+2+4+2+4... etc...
3) La série de chiffres plus haut c'est le programme à appliquer. Chaque chiffre c'est le nombre de jetons dont on va se saisir, dans l'ordre rigoureusement respecté dans lequel on a précédemment aligné les jetons.

Ainsi on a le nombre premier 5.
On a le chiffre 1 donc on va pêcher un seul jeton, en l'occurrence, le jeton +2, et 5+2 ça donne 7, le nombre premier suivant, et ainsi de suite.

J'espère quand même que là, la librairie de compression elle va me compresser correctement cette série.

En attendant, pour cette série, si chaque chiffre (qui dépasse 9 par la suite) fait 8 bits (1 octets), on a alors un fichier de 300 mégaoctets pour représenter tous les nombres premiers jusqu'à 4 milliards.

Ça signifie 600 millisecondes pour simplifier une division de deux nombres de 64 bits...
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Nombres premiers : vérification à plusieurs

Message par Ollivier »

Un petit bonjour à PAPIPP pour dire que je regarde un petit peu ton code source, notamment les données sur les exemples des factorielles, ce qui m'a permis de gagner un peu de temps, au lieu de tâtonner à l'aveugle. Résultat : j'ai un petit code source sympa sous le coude sur les factorielles (dans le sens général du terme) que je vais pouvoir publier.

Je m'y suis fait dedans une petite macro qui simplifie l'écriture d'une procédure dédiée à une fonction mathématique, mais j'hésite à la garder de peur que ça dénature le design du code, et donc que ça perde en facilité de lecture.

J'hésite aussi à intégrer du calcul de nombres stockés en chaîne, vu qu'avec les factorielles, on se retrouve assez facilement avec des nombres de plusieurs centaines de chiffres.

Pas encore bien décidé... À voir...
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Nombres premiers : vérification à plusieurs

Message par Ollivier »

J'ai mis le code des gaps en coding question.
Répondre