Heim > Java > javaLernprogramm > Hauptteil

Warum schlägt mein Java-Code mit einem Ganzzahlüberlauf fehl, wenn ich versuche, Primfaktoren von 600851475143 zu finden?

Patricia Arquette
Freigeben: 2024-11-08 14:53:02
Original
898 Leute haben es durchsucht

Why Does My Java Code Fail with an Integer Overflow When Trying to Find Prime Factors of 600851475143?

Ganzzahlüberlauf mit großen Zahlen

Das obige Codefragment versucht, den größten Primfaktor einer bestimmten Ganzzahl, 600851475143, zu finden. Wann jedoch Wenn der Code ausgeführt wird, schlägt er mit einer Fehlermeldung fehl, die darauf hinweist, dass die Ganzzahl zu groß ist.

Beim Arbeiten mit großen Zahlen in Java ist es wichtig, die verfügbaren Datentypen und deren Grenzen zu berücksichtigen.

Ganzzahlen

Ganzzahlen werden in Java durch Werte mit fester Breite dargestellt. 32-Bit-Ganzzahlen (Typ int) können Werte von -2^31 bis 2^31-1 (ungefähr -2 Milliarden bis 2 Milliarden) enthalten. 64-Bit-Ganzzahlen (Typ long) können Werte von -2^63 bis 2^63-1 (ungefähr -9 Trillionen bis 9 Trillionen) enthalten.

Im Beispielcode überschreitet die angegebene Zahl 600851475143 der Bereich von 32-Bit-Ganzzahlen. Infolgedessen interpretiert Java den Literalwert als 32-Bit-Ganzzahl und schneidet ihn fälschlicherweise auf einen negativen Wert ab, was zum Überlauffehler führt.

Lange Literale

Um einen Literalwert als 64-Bit-Ganzzahl anzugeben, muss ihm ein „L“ angehängt werden. Beispielsweise ist 600851475143L eine gültige Darstellung der gewünschten Zahl in Java.

Überarbeiteter Code

Durch Ändern des Literalwerts in 600851475143L können wir das Überlaufproblem beheben und Führen Sie das Programm erfolgreich aus.

...
        obj.function(600851475143L);
...
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum schlägt mein Java-Code mit einem Ganzzahlüberlauf fehl, wenn ich versuche, Primfaktoren von 600851475143 zu finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage