C ++ - Algorithmus zum Berechnen des kleinsten gemeinsamen Vielfachen für mehrere Zahlen
Gibt es eine C++ - Algorithmus zur Berechnung des kleinsten gemeinsamen vielfachen für mehrere Nummern, wie lcm(3,6,12)
oder lcm(5,7,9,12)
?
InformationsquelleAutor der Frage Askener | 2010-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Verwendung von std::accumulate und einige Hilfsfunktionen:
InformationsquelleAutor der Antwort Blastfurnace
boost bietet Funktionen für die Berechnung lcm von 2 zahlen (siehe hier)
Dann mit der Tatsache, dass
Können Sie leicht berechnen, lcm für mehrere Nummern sowie
InformationsquelleAutor der Antwort Vladimir
Der Algorithmus ist nicht spezifisch für C++. AFAIK, es gibt keine standard-library-Funktion.
Zur Berechnung des LCM, müssen Sie zunächst die Berechnung der GCD (Greatest Common Divisor) mit Euclids algorithm.
http://en.wikipedia.org/wiki/Greatest_common_divisor
Den GCD-Algorithmus ist in der Regel für zwei Parameter, aber...
Zur Berechnung der LCM verwenden...
Die Logik, basierend auf der Primzahl-ZERLEGUNG. Die allgemeinere form (mehr als zwei Variablen) ist...
EDIT - tatsächlich, ich glaube, das Letzte bit falsch sein kann. Die erste LCM (zwei Parameter), ist richtig, aber.
InformationsquelleAutor der Antwort Steve314
Verwendung von GCC mit C++14 folgenden code war für mich:
In C++17 es gibt std::lcm-Funktion (http://en.cppreference.com/w/cpp/numeric/lcm) genutzt werden können, reichern sich direkt.
InformationsquelleAutor der Antwort dividedbyzero
Als C++17, die Sie verwenden können,
std::lcm
.Und hier ist ein kleines Programm, das zeigt, wie spezialisiert es für mehrere Parameter
Test gibt es hier: https://wandbox.org/permlink/25jVinGytpvPaS4v
InformationsquelleAutor der Antwort smac89
Nicht gebaut, um die standard-Bibliothek. Sie müssen entweder selbst erstellen oder Holen Sie sich eine Bibliothek, die es getan hat. Ich Wette Boost hat eine...
InformationsquelleAutor der Antwort John Dibling
Ich gerade erstellt gcd für mehrere Nummern:
dbd - gcd.
n - Anzahl der zahlen.
InformationsquelleAutor der Antwort TheHaris
Source code-Referenz
InformationsquelleAutor der Antwort yayay
Können Sie berechnen, LCM und oder GCM in boost wie diese:
(Beispiel entnommen aus http://www.boost.org/doc/libs/1_31_0/libs/math/doc/common_factor.html)
InformationsquelleAutor der Antwort portforwardpodcast
Die Codes gegeben, nur oben erläutert, über die Bewertung von LCM für mehrere zahlen jedoch ist es sehr wahrscheinlich passieren, dass während der Durchführung der Multiplikationen können wir überlauf integer-limit für Daten Typ Speicher
*Eine Ecke Fall :- *
z.B.
wenn bei der Auswertung erreichen Sie die situation so, dass, wenn LCM_till_now=1000000000000000 next_number_in_list=99999999999999 und Damit GCD=1 (beide co sind relativ prim zueinander)
Also, wenn u ausführen Betrieb (LCM_till_now*next_number_in_list) wird auch nicht fit in "unsigned long long int"
Abhilfe :-
1.Big Integer Klasse
2.Oder wenn das problem ist zu Fragen für die LCM - %MOD----------->dann gelten die Eigenschaften der modularen Arithmetik.
InformationsquelleAutor der Antwort user3166642
Wobei die Tatsache, dass lcm sollten teilbar sein
von allen zahlen in der Liste. Hier ist die Liste ist ein Vektor mit zahlen
InformationsquelleAutor der Antwort Archit Kansal
Ich fand diese während der Suche ein ähnliches problem und wollte dazu beitragen, was ich kam mit zwei zahlen.
InformationsquelleAutor der Antwort Chuck Claunch
Wenn man sich auf dieser Seitesehen Sie einen ziemlich einfachen Algorithmus, den Sie verwenden konnten. 🙂
Ich sage nicht, dass es effizient oder alles, Geist, aber es funktioniert konzeptionell Skala um mehrere Nummern. Sie brauchen nur Raum für die Verfolgung Ihrer ursprünglichen zahlen und eine geklonte Satz, den Sie manipulieren, bis Sie die LCM.
InformationsquelleAutor der Antwort Platinum Azure
InformationsquelleAutor der Antwort MUHAMMAD USMAN ANJUM
InformationsquelleAutor der Antwort TheJackal