FACTORISATION ET TEST DE PRIMALITÉ 32 BITS ULTRA OPTIMISÉ

Messages postés
390
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009
- - Dernière réponse : Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
- 17 juil. 2010 à 01:33
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/52027-factorisation-et-test-de-primalite-32-bits-ultra-optimise

Afficher la suite 
John Dogget
Messages postés
390
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009
-
J'aime bien ce genre d'optimisations ^^

Au niveau rapidité, c'est pas mieux d'inclure la megaliste de premier dans un fichier ressource ?
Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
5 -
Dans un fichier ressource ? Si, ça serait possible, mais je pense que la vitesse resterait la même, car on serait obligé de copier la liste depuis le fichier ressource dans un tableau d'entiers, donc on gagnerait probablement un peu de performance au niveau des précalculs mais ça serait kif-kif au niveau des fonctions intéressantes elles-mêmes.

Mais je vais essayer pour voir ...

Cordialement, Bacterius !
WhiteHippo
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
-
Bonsoir

J'ai pas testé ton application, juste regardé brievement le code, mais vu que l'on parle d'optimisation, ne serait-il pas plus rapide de changer la fonction root comme suit :

function Root(N: Longword): Longword;
var
Temp : LongWord ;
begin
Result := 1;
Temp := 3;
while ( N > Temp ) do
begin
Dec(N, Temp);
Inc(Result);
Inc(Temp,2);
end;
Inc(Result);
end;

Ceci afin d'éviter la répétition du calcul Result*2 + 1.

N.B. La fonction proposée, si ça se trouve, est elle aussi améliorable ;)

Cordialement.
Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
5 -
J'ai pris cette source de Barbichette, et il avait dit qu'il était inutile d'essayer d'optimiser le Result * 2 + 1 car le compilateur le faisait automatiquement ^^
Mais merci quand même. Remarque que cette fonction n'est pas cruciale, elle sert juste à précalculer les nombres premiers jusqu'à 65521.

Cordialement, Bacterius !