while-Schleife raubt mir den Nerv

shakar

Grünschnabel
C++ while-Schleife raubt mir den Nerv

Hi,
hab heute mal mit nem C++ Tutorial angefangen und war soweit auch ohne Probleme zumal ich das meiste ncoh aus der Schule von Java kannte. Jetzt bin aber bei einer Übung zu schleifen, bei der man die Primzahlen in den ersten 100 zahlen finden soll. Der main-Teil funktioniert auch soweit und arbeitet fehlerfrei mit einem Lösungsvorschlag für die "istPrim"-Funktion ausem Tutorial zusammen. Meine eigene Variante der Funktion scheint da aber wesentlich widerspenstiger zu sein. Ich bin mir auch sicher das es irgendwas banales ist, aber man kennt das ja :rolleyes:
Hier mal der ausschnitt aus dem Tutorial (Volkards C++ Kurs):
Jede natürliche Zahl läßt sich mindestens durch 1 und durch sich selbst ohne Rest teilen. Eine natürliche Zahl ist genau dann eine Primzahl, wenn sie außer diesen beiden Teilern keine anderen mehr hat. Die ersten Primzahlen sind: 2, 3, 5, 7, 11, 13, 17.

Schreiben Sie ein Programm, das die Primzahlen bis 100 ausgibt. Schreiben Sie dazu folgende Funktion:
Code:
bool istPrim(int kandidat)
Diese Funktion soll einfach alle Zahlen von 2 bis kandidat-1 als Teiler ausprobieren. Wenn der Primzahlenkandidat ohne Rest (verwenden Sie also den Modulo-Operator) durch den Teiler geteilt werden kann, dann ist es keine Primzahl. Wenn die Schleife ganz durchlaufen worden ist, ohne einen Teiler zu finden, dann ist es eine Primzahl. Überlegen Sie, ob Sie break oder continue einsetzen könnten!
Und hier mein Vorschlag:
Code:
#include <iostream.h>

bool istPrim(int kandidat)
{
	int teiler=kandidat;
	while(teiler>2);
	{
		teiler=teiler-1;
		if(kandidat%teiler==0)
			return false;
	};
	return true;
};

void main()
{
	for(int kandidat=2;kandidat<=100;kandidat=kandidat+1)
	{
		if(istPrim(kandidat)==true)
			cout<<kandidat<<" ist eine Primzahl."<<endl;
	};
};
Ich halt schonmal das "Kopf-gegen-Wand-schlag"-Smiley bereit und danke für jede Hilfe
mfg

Edit: ich arbeite mit visual c++, falls das von belang ist
 
Zuletzt bearbeitet:
Hi,
du hast da ein kleines Semikolon nach deiner while-Anweisung ;)
Nach Funktionen und nach dem Schleifen braucht man auch keins

Benny
 
Und wo wir grad dabei sind, hinter den geschweiften Klammern:

Code:
 };

gehört auch kein Semikolon.
 
Zurück