1. #1

    Registered
    30/09/10
    Location
    Rotterdam
    Posts
    1
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0

    Java priemgetallen

    ik heb een probleem , ik wil de eerste 200 priemgetallen berekenen en uit printen tot nu toe heb ik dit maar er komt niks uit help ?



    import javax.swing.*;
    public class Opdracht3
    {
    public static void main(String[] args)
    {
    int priemgetal=0;
    int restwaarde=0;
    int x;
    int d;
    boolean ispriemgetal=true;

    priemgetal++;
    System.out.println(priemgetal+"= 2");

    for(x=3;priemgetal<=200;x=x+2);
    {

    for(d=2;d<x;d++);
    {

    if(priemgetal%d==0);
    {
    ispriemgetal=false;
    }
    }
    }
    if(ispriemgetal==true);
    {
    priemgetal++;
    System.out.println(priemgetal+"=" +x);
    }
    }
    }
    no votes  

  2. #2
    Gurdt's Avatar
    Registered
    21/08/08
    Location
    Hasselt
    Posts
    2,653
    iTrader
    8 (100%)
    Mentioned
    0 Post(s)
    Reputation
    5/46
    Vooreerst een paar opmerkingen, als je op een forum een stukje code post kan je dat best doen door gebruik te maken van de "code"-tags. Dan is alles al een stuk overzichtelijker geïndenteerd Ook webservices als Pastebin e.d. zijn erg nuttig.
    Ook je code opruimen is handig wanneer je foutjes zoekt. Er zijn variabelen die je niet gebruikt, en je importeert een package die je nergens gebruikt. Ook tussen variabelen en operatoren kan je best een spatie zetten enzovoort.
    Je initialiseert ook de variabele priemgetal op 0, waarna je meteen ++ doet.

    Wanneer je code proper is, is deze leesbaarder, en dan zie je rapper foutjes Zoals hieronder bijvoorbeeld.

    Je gaat in die for-lus, maar je kan daar onmogelijk uit geraken. Je zegt dat de conditie "priemgetal <= 200" is. De variabele priemgetal is 1 en zal nergens veranderen, die stopt dus nooit die lus Jij wil waarschijnlijk die x veranderen naar priemgetal.

    Je if-constructie staat trouwens buiten de 2 forlussen, volgens mij wil je die binnen de buitenste, en buiten de binnenste?

    Hier is een mogelijke oplossing die ik net even gemaakt heb: (op voorbehoud van optomalisaties enzovoort)
    Code:
    public class Priemgetallen
    {
    	public static void main(String[] args)
    	{
    		boolean isPriem = true;
    		/* itereer over alle getallen die mogelijk een priemgetal kunnen zijn */
    		for(int testgetal = 2; testgetal <= 200; ++testgetal) {
    			/* itereer over alle getallen die het testgetal mogelijk kunnen delen */
    			for(int deler = 2; deler <= testgetal/2 && isPriem; ++deler) {
    				/* is het testgetal deelbaar door het priemgetal? */
    				if((testgetal % deler) == 0) {
    					isPriem = false;
    				}
    			}
    			
    			/* verwerking (mogelijk) priemgetal */
    			if(isPriem) {
    				System.out.println(testgetal + " is een priemgetal");
    			}
    
    			isPriem = true;
    		}
    	}
    }
    o/'
    no votes  

  3. #3
    General Lee's Avatar
    Registered
    04/02/04
    Location
    3010/3690
    Posts
    4,208
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    4/43
    Voor de delers hoeft ge volgens mij niet van 2 tot testgetal/2 te gaan, maar volstaan de gehele getallen tussen 2 en sqrt(testgetal)
    I'm a writer. I think, I type, I drink. Lather, rinse, repeat. Not always in that order.
    no votes  

  4. #4
    Gurdt's Avatar
    Registered
    21/08/08
    Location
    Hasselt
    Posts
    2,653
    iTrader
    8 (100%)
    Mentioned
    0 Post(s)
    Reputation
    5/46
    Inderdaad
    o/'
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in