priemgetallen tot 10000

Status
Niet open voor verdere reacties.

Dennis0o

Nieuwe gebruiker
Lid geworden
5 dec 2009
Berichten
2
ik probeer een programma te maken die alle priemgetallen tot 1000 laat zien dit heb ik:

Code:
#include <iostream>
using namespace std;

int main();
{	
int miljoen = 1000;
// Check of een getal een priemgetal is
for (int i = 0; i < miljoen; i++)
	
	// Check of het een 2 of een 3 is
	if (i == 2 || i == 3)
	{
	cout << i;
}

	int temp = i;
	// Deel elk het getal boven de ��n (vanaf 2 dus) en onder
// de helft van het getal dat we testen
	for (int j = 2; j < ((temp/2)+1); j++)
{
if ((temp % j) == 0)
{
	break; // als een getal perfect deelt(de rest 0 is) spring uit de loop
	}
	if(j == (temp/2))
	{
	cout << i;
	
return 0;
	}

wat doe ik verkeerd?
 
Hij compileert niet.
frank@darkstar:/temp$ g++ -Wall -ansi -o priem priem.cpp
priem.cpp:5: fout: expected unqualified-id before '{' token
Deze fout wordt veroorzaakt door de puntkomma achter "int main()". Die moet weg.
frank@darkstar:/temp$ g++ -Wall -ansi -o priem priem.cpp
priem.cpp: In function 'int main()':
priem.cpp:16: fout: name lookup of 'i' changed for new ISO 'for'
scoping
priem.cpp:8: fout: using obsolete binding at 'i'
priem.cpp:30: fout: expected `}' at end of input
priem.cpp:30: fout: expected `}' at end of input
Op regel 16 staat [cpp]int temp = i;[/cpp]
Als je gebruik maakt van "for (int i=...)" bestaat de variabele 'i' alleen binnen de for-lus. Wil je hem ook daarbuiten nog kunnen gebruiken moet je voor de for-lus "int i;" zetten en de for-lus wordt dan "for (i=...)".
De andere fouten komen doordat enkele accolades ontbreken. Ik heb je programma een wat nettere inspring gegeven en bovenstaande fouten opgelost. Nu compileert hij iig.

[cpp]#include <iostream>
using namespace std;

int main()
{
int miljoen = 1000;
// Check of een getal een priemgetal is
for (int i = 0; i < miljoen; i++)
{
// Check of het een 2 of een 3 is
if (i == 2 || i == 3)
{
cout << i;
}
int temp = i;
// Deel elk het getal boven de ??n (vanaf 2 dus) en onder
// de helft van het getal dat we testen
for (int j = 2; j < ((temp/2)+1); j++)
{
if ((temp % j) == 0)
{
break; // als een getal perfect deelt(de rest 0 is) spring uit de loop
}
if(j == (temp/2))
{
cout << i;
}
}
}
return 0;
}[/cpp]

[edit]Ik zie nu dat je idee klopt en dat alleen de accolades niet klopten. Ik heb het weer even aangepast (andere inspring en accolades op een andere plek gezet) en nu werkt je programma. Ik zou alleen [cpp]cout << i[/cpp] vervangen door [cpp]cout << i << " "[/cpp] dan wordt er een spatie na elk getal geprint en zie je de getallen los. Anders is dit het resultaat:
2357111317192329313741434753596167717379838997101103107109113127131137139149151157163167173179181191193197199211223227229233239241251257263269271277281283293307311313317331337347349353359367373379383389397401409419421431433439443449457461463467479487491499503509521523541547557563569571577587593599601607613617619631641643647653659661673677683691701709719727733739743751757761769773787797809811821823827829839853857859863877881883887907911919929937941947953967971977983991997

Mag ik trouwens vragen waarom je gebruik maakt van de variabele "temp" i.p.v. 'i'?[/edit]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan