Archief - Java priemgetallen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

lagrima

Legacy Member
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);
}
}
}

Gurdt

Legacy Member
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;
		}
	}
}

General Lee

Legacy Member
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)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan