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 a
    2, 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. 🙂


Anmelden zum Antworten