Frühere | Chronologischer Index | Spätere | ||
Vorherige | Thematischer Index | Nächste |
Am 04.04.2012 02:21, schrieb Udo und Susanne Krause:
Liebe Freundinnen und Freunde des karwöchentlichen Rechnens, gelegentlich sollte man die ungeordneten multiplikativen Zerlegungen Z einer positiven ganzen Zahl P in A ganzzahlige Faktoren kennen. Natürlich ergibt sich Z einerseits durch Zusammenfassung der Primfaktoren in A Gruppen, allenfalls unter Zuhilfenahme der 1, sofern nicht genügend Primfaktoren vorhanden sind. Andererseits ist Z eine Auswahl von A-Tupeln der Divisoren von P, die Implementation bei Vorhandensein unbegrenzter Ressourcen ist schlicht In[332]:= Z[A_Integer?Positive, P_Integer?Positive] := Union[Sort /@ Select[Tuples[Divisors[P], A], (Times @@ # == P) &]] Man finde eine effiziente Implementation für Z[A, P], etwa tupledDivisors[A, P]. [divisor partition, multiplicative partition] Mit den besten Grüssen Udo. P.S. 1: Beispiele In[369]:= tupledDivisors[1, 36] Out[369]= {{36}} In[370]:= tupledDivisors[2, 36] Out[370]= {{1, 36}, {2, 18},{3, 12}, {4, 9}, {6, 6}} In[371]:= tupledDivisors[3, 36] Out[371]= {{1, 1, 36}, {1, 2, 18}, {1, 3, 12}, {1, 4, 9}, {1, 6, 6}, {2, 2, 9}, {2, 3, 6}, {3, 3, 4}} In[372]:= tupledDivisors[4, 36] Out[372]= {{1, 1, 1, 36}, {1, 1, 2, 18}, {1, 1, 3, 12}, {1, 1, 4, 9}, {1, 1, 6, 6}, {1, 2, 2, 9}, {1, 2, 3, 6}, {1, 3, 3, 4}, {2, 2, 3, 3}} In[373]:= tupledDivisors[5, 36]Out[373]= {{1, 1, 1, 1, 36}, {1, 1, 1, 2, 18}, {1, 1, 1, 3, 12}, {1, 1, 1,4, 9}, {1, 1, 1, 6, 6}, {1, 1, 2, 2, 9}, {1, 1, 2, 3, 6}, {1, 1, 3, 3, 4}, {1, 2, 2, 3, 3}} In[374]:= tupledDivisors[6, 36] Out[374]= {{1, 1, 1, 1, 1, 36}, {1, 1, 1, 1, 2, 18}, {1, 1, 1, 1, 3, 12},{1, 1, 1, 1, 4, 9}, {1, 1, 1, 1, 6, 6}, {1, 1, 1, 2, 2, 9}, {1, 1, 1, 2,3, 6}, {1, 1, 1, 3, 3, 4}, {1, 1, 2, 2, 3, 3}} P.S. 2: Effizienz In[379]:= Length[Divisors[8 5 7 18 36]] Out[379]= 140 In[380]:= Plus @@ Last /@ FactorInteger[8 5 7 18 36] Out[380]= 12 In[381]:= Length[tupledDivisors[12, 8 5 7 18 36]] // Timing Out[381]= {13.057, 6756}
Frohe Ostern!Wenn man beim Prozess des sukzessiven Anhängens kleiner Teiler am Anfang der Faktorenlisten die Listen rausschmeißt, die zu hohe Produkte bekommen haben und diejenigen, die exakt stimmen, speichert, aber der weiteren Bearbeitung entzieht, scheint sich der Aufwand in tolerablen Grenzen zu halten (siehe Anhang).
Grüße, Peter
tupledDivisors.nb
Description: Mathematica Notebook document
Frühere | Chronologischer Index | Spätere | ||
Vorherige | Thematischer Index | Nächste |
DMUG-Archiv, http://www.mathematica.ch/archiv.html