ALGORITHMEN - Teil XXVII: Kaum ist alles richtig, schon stimmt alles!

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • Neu

      Lösung zum nachgetragenen KAR-28-Rätsel
      -------------------------------------------------
      Spoiler anzeigen

      Gesucht ist die kleinste positive Ganzzahl N, für die die Quadratwurzel aus (2016 * N) ebenfalls eine Ganzzahl ist.

      Sind M,N ganze Zahlen, dann wird hier nach dem N gefragt, das die folgende Gleichung erfüllt:
      M = Sqrt(2016 * N)

      Durch raten und probieren kommt man unter N=20 recht schnell zur Lösung.

      Uns interessiert hier aber ein allgemeines Verfahren für Probleme dieses Typs (- sprich: Es muss ja nicht immer 2016 sein!).

      Die Quadratwurzel werden wir am besten durch Quadrieren los:
      M^2 = 2016 * N
      Links steht nun eine (natürlich auch ganzzahlige) Quadratzahl.

      Zerlegen wir 2016:
      2016 / 2 =
      1008 / 2 =
      504 / 2 =
      252 / 2 =
      126 / 2 =
      63 / 3 =
      21 / 3 =
      7 / 7 =
      1.
      Mit anderen Worten: 2016 = 2^5 * 3^2 * 7^1

      Durch Multiplikation mit dem N soll eine Quadratzahl herauskommen, nämlich M^2.

      Quadratzahlen haben die Eigenschaft, dass alle Faktoren ihrer Primfaktorenzerlegung geradzahlige Exponenten haben.

      Das war bei der Zerlegung von 2016 bei 2 und bei 7 nicht der Fall. Mit einem geeigneten N multipliziert lässt sich das aber beheben:
      Das kleinstmögliche N hat somit die Zerlegung 2^1 * 7^1 (=14), und das bringt
      das M² auf die Quadratzahl 2^6 * 3^2 * 7^2 (= 64 * 9 * 49 = 28224)
      Das einfache M ist dann laut Formel die Quadratwurzel daraus, nämlich M = 168.

      Prüfen wir das nach: Probe mit N = 14:
      Sqrt(2016 * 14) = Sqrt(28224) = 168 ... ganzzahlig, hurra!
      q.e.d.


      P.S.: KAR-30 und KAR-31 sind noch offen!

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von p. specht ()

    • Neu

      Brute force-Lösungsansatz zu KAR-28
      ------------------------------------------
      ... zur Bestätigung, dass es sich um den kleinstmöglichen Faktor handelt:

      Quellcode

      1. WindowTitle " K A R - 2 8 - L ö s e r"
      2. WindowStyle 24:Window 260,120:cls $AAAAAA
      3. Font 2:Declare M!
      4. WhileLoop 100
      5. M!=Sqrt(2016*&Loop)
      6. If M!=Int(M!)
      7. Locate 3,3
      8. Music "O4 C16. F2"
      9. Print " Lösung:",&Loop," (Sqrt = ",M!\1,")\n\n"
      10. BREAK
      11. EndIf
      12. EndWhile
      13. WaitInput
      14. End
      Alles anzeigen
    • Neu

      Abt. Ohne Worte
      ===========

      Quellcode

      1. WindowTitle "Rosetta: Loop_over_multiple_arrays_simultaneously"
      2. 'http://www.rosettacode.org/wiki/Loop_over_multiple_arrays_simultaneously
      3. WindowStyle 24:Window 200,200:CLS $A0A000:Font 2
      4. Declare A1$[],tmp$[],A2&[],A3$
      5. A1$[]=Explode("A,B,C",",")
      6. tmp$[]=Explode("1,2,3",","):SetSize A2&[],SizeOf(tmp$[]):A2&[]=Val(tmp$[&index]):Clear tmp$[]
      7. A3$="a,b,c"
      8. WhileLoop 0,SizeOf(A1$[])-1
      9. Locate %csrlin+2,10
      10. Print A1$[&Loop]+Str$(A2&[&Loop])+SubStr$(A3$,&Loop+1,",")
      11. EndWhile
      12. WaitInput
      13. End
      Alles anzeigen