Algo parallèle calculant n!
Fermé
FonKy$@miLy
-
2 déc. 2005 à 00:07
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 - 6 févr. 2006 à 16:35
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 - 6 févr. 2006 à 16:35
A voir également:
- Algo parallèle calculant n!
- Calcul resistance led en parallèle ✓ - Forum Matériel & Système
- Brancher deux ampli en parallèle - Forum Enceintes / HiFi
- Branchement speakon parallèle ✓ - Forum Enceintes / HiFi
- Telecharger algo pour pc - Télécharger - Édition & Programmation
- Comment brancher 2 ampli - Forum Audio
3 réponses
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
2 déc. 2005 à 16:35
2 déc. 2005 à 16:35
début Entier fact=1; nbFact<--récupérer le nombre dont on doit calculer le factoriel Pour I variant de 1 à nbFact inclus fact<--fact * I FinPour Ecrire"Le factoriel de ". nbFact." est :".fact fin
C'est ça que tu veux ?! ? !
Zep3k!GnO
salut
algo fact;
var
s,i,r:entier.
debut
ecrire('entrer votre nombre');read(r);
s<--0;
pour i=1 a r fair
s<--s+r;
ecrire('le resultas est: ');ecrire(s);
fin.
----------
il faut etre serieux dant la vie
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
200
6 févr. 2006 à 10:28
6 févr. 2006 à 10:28
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
858
6 févr. 2006 à 16:35
6 févr. 2006 à 16:35
bonjour,
en préambule, je n'y connais rien en parallélisme.
ceci étant posé, j'ai quand même imaginé que globalement il devait y avoir un module de répartition du travail entre des entités (que j'ai appelées des threads) et qu'à la fin du travail, il fallait agréger les résultats de chaque thread.
je me suis donc construit un parallèle sérialisé en VBA (marque non déposée).
ça donne :
le calcul de la factorielle est réparti sur chaque thread.
par exemple, si je calcule 10! sur 3 threads, le premier calculera 10*7*4*1, le deuxième : 9*6*3 et le 3ème : 8*5*2.
le résultat agrégé correspond bien entendu au produit des résultats partiels de chaque thread.
voilà un petit délire sur ce que j'imagine être du traitement parallèle d'une factorielle!
pour tester : mettre le n dans A1, le nbre de threads en B1 et faire =fact_parallele(A1, B1) en C1
A+
un code plus dense :
en préambule, je n'y connais rien en parallélisme.
ceci étant posé, j'ai quand même imaginé que globalement il devait y avoir un module de répartition du travail entre des entités (que j'ai appelées des threads) et qu'à la fin du travail, il fallait agréger les résultats de chaque thread.
je me suis donc construit un parallèle sérialisé en VBA (marque non déposée).
ça donne :
Function fact_parallele(n, nbthread) Dim result() ReDim result(nbthread) ' dispatch sur chaque thread For j = 1 To nbthread result(j) = fact_thread(n - j + 1, nbthread) Next 'agrège les résultats resultat = 1 For j = 1 To nbthread resultat = resultat * result(j) Next fact_parallele = resultat End Function************
Function fact_thread(p, q) If p <= 1 Then fact_thread = 1 Else fact_thread = p * fact_thread(p - q, q) End If End Functionle tableau result() reçoit les résultats de chaque thread.
le calcul de la factorielle est réparti sur chaque thread.
par exemple, si je calcule 10! sur 3 threads, le premier calculera 10*7*4*1, le deuxième : 9*6*3 et le 3ème : 8*5*2.
le résultat agrégé correspond bien entendu au produit des résultats partiels de chaque thread.
voilà un petit délire sur ce que j'imagine être du traitement parallèle d'une factorielle!
pour tester : mettre le n dans A1, le nbre de threads en B1 et faire =fact_parallele(A1, B1) en C1
A+
un code plus dense :
Function fact_parallele_direct(n, nbthread) 'dispatch sur chaque thread et agrège directement resultat = 1 For j = 1 To nbthread resultat = resultat * fact_thread(n - j + 1, nbthread) Next fact_parallele_direct = resultat End Function