![]() |
Weet iemand waarom mijn Mersenne programma (in Java) niet verder gaat dan 2^31 - 1?
Voor school moet ik een programma schrijven dat de eerste 10 Mersenne priemgetallen uitrekent (Een Mersenne priem is een priem die voldoet aan de vorm 2^n - 1).
Het programma werkt tot op n = 30 alles prima uit, maar bij n >= 31, blijft ie (2^31 - 1) % 2 uitrekenen. Wie weet waarom? Hier is de code: PHP-code:
|
Je werkt met ints. Ik vermoed dat het 4-byte integers zijn, oftewel 32-bits, oftewel 2^32-1, maximaal.
|
in java :confused:
|
Citaat:
|
Code:
System.out.println("Byte: " + Byte.MAX_VALUE); Code:
Byte: 127 |
Citaat:
ennu als je snel veel priemgetallen wilt uitrekenen, kan ik je geen java aanraden aangezien die taal niet echt snel is (virtual machine) |
Citaat:
Tsja, ik ben het helemaal met je eens en zou wel willen, maar er wordt een java programma verwacht + source. ;) |
Citaat:
|
zoo leuk als mensen appels met peren vergelijken :cool:
|
Citaat:
Niet dat het voor een huiswerkopdracht uberhaupt uitmaakt, maargoed. |
Citaat:
|
Citaat:
|
Citaat:
|
Citaat:
|
java is wel een geinterpreteerde taal, tenminste, java bytecode is een geinterpreteerde taal.
Als het je huiswerk opdracht is om in *java* een priemgetallenprogramma te schrijven dat hogere getallen dan 2^31 kan berekenen, dan zou ik de java BigInt class eens uitzoeken. Nee, ik weet niet waar die staat en ik weet niet hoe die werkt. Maar het is wel wat je nodig hebt. Er zijn een hoop talen (zoals Scheme) die standaard bigint support hebben. Scheme is erg makkelijk en er bestaan zeer snelle implementaties van. Misschien kun je je leraar ervan overtuigen dat het de moeite waard is om het daarin te doen? Het gaat immers om het algoritme, lijkt me. |
Alle tijden zijn GMT +1. Het is nu 02:39. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.