warum nicht a*2 ??
-
Hab folgendes zum Ermitteln vom kleinsten gemeinsamen Vielfachen:
#include <iostream> using namespace std; int kgv(int x, int y) { int a; a=(x>y)?x:y; while((a%x)||(a%y)) a*2; return(a); } int main() { int x,y,b; cout << "1. Wert:"; cin >> x; cout << "2. Wert:"; cin >> y; b=kgv(x,y); cout <<b<< endl; cin.get(); cin.get(); return(0); }/edit pumuckl: [cpp]-Tags eingefügt, demnächst bitte selber machen!
Wenn ich da a2 stehen habe, bekomm ich nur dan ein Ergebnis, wenn x ein Vielfaches von y ist.
Wenn da aber statt a2, a++ steht funktioniert es ganz normal.
Woran liegt das ??
-
a*2 liefert ein Ergebnis, aber wo soll das denn am Ende stehen?
a++ entspricht a = a + 1; (Damit bekommt a den neuen Wert zugewiesen)
a*=2 entspreicht a = a * 2; ( Auch hier würde a den neuen Wert bekommen
a*2 entspricht nur a*2; Das Ergebnis verschwindet im Nirvana.
-
a*2 verändert a nicht.
-
Wenn Du a=a*2; meintest, ist das auch der falsche Ansatz. Das KGV reduziert man normalerweise auf den GGT:
long ggt(long, long); inline long kgv(long a, long b) { return a/ggt(a,b)*b; }und für den GGT findest Du im Netz genug Lösungen.
-
Ah, ok. Danke für die Antworten.
