nächste Quadratzahl

  • Ich habe eine Zahl-X und suche die nächste höhere Quadratzahl ausgerechnet.

    Beispiel:

    Zahl: 78

    Nächst höhere Quadratzahl 9, weil 9x9=81

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Soll bei 81 (also genaue Quadratzahl) jetzt 9 oder 10 herauskommen?

    Ich bleibe beim Ergebnis 10, auch schon weil es die "nachste" ist. BugFix ´s Script sieht das auch so... :thumbup:

  • Ich sehe das anders, Alina sucht die nächst mögliche Quadratzahl zur genannten Zahl, also wie bereits von ihr erwähnt: 9

    Würde man das Gleiche für 31 machen, müsste 6 raus kommen, bei 30 jedoch 25.

    Um mal das Beispiel von BugFix zu nehmen und ein bisschen überarbeitet:

    AutoIt
    Opt('MustDeclareVars', 1)
    ConsoleWrite(_NextSquare(78) & @CRLF); 9
    ConsoleWrite(_NextSquare(30) & @CRLF); 5
    ConsoleWrite(_NextSquare(31) & @CRLF); 6
    
    Func _NextSquare($_x)
    Local Const $sqrt = Round(Sqrt($_x), 0)
        Return $sqrt
    EndFunc
  • Nächst höhere

    UNGLEICH zu:

    Alina sucht die nächst mögliche

    Aber ich sehe da keine Mißverständlichkeit.

    "Nächsthöhere" includiert, dass der aktuelle Wert bereits ein Quadrat sein kann. Somit kann die Bildungsformel nur lauten:

    Integer der Wurzel(ZAHL) +1

    Wieso du meinst, dass bei 31 "6" und bei 30 "5" das Ergebnis sein sollte, verstehe ich nicht. Quadrat von "5" ist 25, aktuelle Zahl ist aber >25, also ist nächstes Quadrat 36 -- Ergebnis "6".

    EDIT: Deine Variante zielt eher auf die "in irgendeine Richtung nächste", das ist dann aber nicht, wie gefordert, immer die "höhere".

    Aber letztlich muss Alina das klären.

  • Hmm auch eine Sichtweise BugFix , aber dann wäre dennocch 10 falsch, da die nächst höhere 9 ist.

    Und ich weiß gerade nicht, wie Andy darauf kommt, das dein Script auch auf 10 kommt, bei meinem Test sagt es auch 9. Also es so funktioniert wie erwartet, wenn man das "nächst höhere" meint und nicht nur das "nächste".

  • Es geht um die 81 - nicht die 78.
    Bei 81 ist es zweischneidig, da diese selbst eine Quadratzahl ist.
    Es muss hier daher definiert werden ob die aktuelle oder die nächsthöhere Quadratzahl zurückgegeben werden soll.
    Und BugFix´Skript löst es durch die tatsächlich nächsthöhere Zahl - die 10.

  • Soll das ein Battle um den besten Algorithmus sein ?

    AutoIt
    ConsoleWrite(_NextSquare(78) & @CRLF)
    
    Func _NextSquare($_x)
        Local $sqrt = Int(Sqrt($_x))
        Return $sqrt +1
    EndFunc

    Nein, soll es nicht sein und allen Danke für die Antworten.

    Moombas hat es richtig gesagt. Hatte ich evtl. nicht deutlich geschrieben. Die nächste mögliche Quadratzahl zur genannten Zahl. Das was BugFix gepostet hat nehme ich.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (23. März 2023 um 17:28)