Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 02-10-2006, 00:42
Rob
Avatar van Rob
Rob is offline
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:
 public class CollectionB {
  private static 
int numberOfPrimes 10;

  public static 
void main(String[] args) {
    
calculate();
  }

  private static 
void calculate() {
    
int primesFound 0;
    
int exponentToCheck 0;

    while(
primesFound numberOfPrimes) {
      
exponentToCheck++;

      
//Dubbele bereking, ja. Gren zin om te veranderen.
      
int maxDivisor = (int)(Math.pow(2exponentToCheck)) - 1;
      
int numberToCheck = (int)(Math.pow(2exponentToCheck)) - 1;
      
      
int divisor 2;

      
boolean isPrime true;

      while(
divisor maxDivisor && isPrime) {
        
isPrime numberToCheck divisor 0;
        
divisor++;
      }
      if(
isPrime) {
        
primesFound++;
        
System.out.println("Prime #" primesFound ": " numberToCheck);
      }
    }
  }

Enig idee? >.<
__________________
Bad spelling and grammar make me [sic].
Met citaat reageren
Advertentie
Oud 02-10-2006, 11:24
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Je werkt met ints. Ik vermoed dat het 4-byte integers zijn, oftewel 32-bits, oftewel 2^32-1, maximaal.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 02-10-2006, 11:57
pc nerd
pc nerd is offline
in java
Met citaat reageren
Oud 02-10-2006, 15:16
Rob
Avatar van Rob
Rob is offline
Citaat:
Manuzhai schreef op 02-10-2006 @ 12:24 :
Je werkt met ints. Ik vermoed dat het 4-byte integers zijn, oftewel 32-bits, oftewel 2^32-1, maximaal.
Hrm, zo heb ik nog niet gedacht. Ik moet dan zeker gebruik maken van Bigints oid?
__________________
Bad spelling and grammar make me [sic].
Met citaat reageren
Oud 02-10-2006, 16:35
Verwijderd
Code:
System.out.println("Byte: " + Byte.MAX_VALUE);
System.out.println("Integer: " + Integer.MAX_VALUE);
System.out.println("Long: " + Long.MAX_VALUE);
System.out.println("Float: " + Float.MAX_VALUE);
System.out.println("Double: " + Double.MAX_VALUE);
Code:
Byte: 127
Integer: 2147483647
Long: 9223372036854775807
Float: 3.4028235E38
Double: 1.7976931348623157E308
Kan er zo snel verder geen verzinnen
Met citaat reageren
Oud 02-10-2006, 17:00
Warsocket
Avatar van Warsocket
Warsocket is offline
Citaat:
Rob schreef op 02-10-2006 @ 16:16 :
Hrm, zo heb ik nog niet gedacht. Ik moet dan zeker gebruik maken van Bigints oid?
idd

ennu als je snel veel priemgetallen wilt uitrekenen, kan ik je geen java aanraden aangezien die taal niet echt snel is (virtual machine)
__________________
01110100011001010111011001100101011001010110110000100000011101000
11010010110101001100100001000000011111100111111001000000011101001010000
Met citaat reageren
Oud 02-10-2006, 17:12
Rob
Avatar van Rob
Rob is offline
Citaat:
Warsocket schreef op 02-10-2006 @ 18:00 :
idd

ennu als je snel veel priemgetallen wilt uitrekenen, kan ik je geen java aanraden aangezien die taal niet echt snel is (virtual machine)
Okay, dan.

Tsja, ik ben het helemaal met je eens en zou wel willen, maar er wordt een java programma verwacht + source.
__________________
Bad spelling and grammar make me [sic].
Met citaat reageren
Oud 03-10-2006, 21:07
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Citaat:
Warsocket schreef op 02-10-2006 @ 18:00 :
idd

ennu als je snel veel priemgetallen wilt uitrekenen, kan ik je geen java aanraden aangezien die taal niet echt snel is (virtual machine)
Java is in veel gevallen sneller dan C++. Dat het een geïnterpreteerde taal is zegt lang niet alles.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 04-10-2006, 17:45
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
zoo leuk als mensen appels met peren vergelijken
Met citaat reageren
Oud 05-10-2006, 16:32
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
Manuzhai schreef op 03-10-2006 @ 22:07 :
Java is in veel gevallen sneller dan C++. Dat het een geïnterpreteerde taal is zegt lang niet alles.
Nee, het is in sommige vaak gecontrueerde gevallen sneller, niet in veel gevallen. Kwa snelheid kan er weinig op tegen geoptimaliseerde machinecode.

Niet dat het voor een huiswerkopdracht uberhaupt uitmaakt, maargoed.
Met citaat reageren
Oud 05-10-2006, 16:53
Verwijderd
Citaat:
Manuzhai schreef op 03-10-2006 @ 22:07 :
Java is in veel gevallen sneller dan C++. Dat het een geïnterpreteerde taal is zegt lang niet alles.
Java is geen geïnterpreteerde taal...
Met citaat reageren
Oud 05-10-2006, 16:53
Verwijderd
Citaat:
Chimera schreef op 05-10-2006 @ 17:32 :
Kwa snelheid kan er weinig op tegen geoptimaliseerde machinecode.
Dus Java (of .NET)
Met citaat reageren
Oud 05-10-2006, 17:50
Verwijderd
Citaat:
eddie schreef op 05-10-2006 @ 17:53 :
Dus Java (of .NET)
nee, assembly
Met citaat reageren
Oud 05-10-2006, 18:59
Verwijderd
Citaat:
fosje schreef op 05-10-2006 @ 18:50 :
nee, assembly
fout
Met citaat reageren
Oud 08-10-2006, 02:04
dragonstorm
Avatar van dragonstorm
dragonstorm is offline
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.
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 06:35.