Programm zur Primzahlerkennung

Escobar89

Grünschnabel
Hi ich muss für die Uni ein Programm schreiben dass Primzahlen erkennt (zwischen 10 und 2000000000).
Das Programm gibt mir immer die Fehlermeldung "error C2143" dass vor einem ";" eine ")" fehlt...
Meiner Meinung nach ist der code aber richtig, weis nicht wo da was fehlen soll.
Bitte um Hilfe, Danke im Vorraus
C++:
#include <stdio.h>
int main (void)
{
	int i, z, rest, primzahl, teiler;

	primzahl = 1;

	do
	{
		printf("Zahl zwischen 10 und 2.000.000.000 eingeben\n");
		scanf("%d",&z);
	}

	while ( (z<10 || (z>2000000000) );

	for (i=2; (i*i <= z) && (primzahl == 1) ; i++ )
	{
		rest = z % i;
		if ( rest == 0 )
		{
			primzahl = 0;
			teiler = i;
		}
	}

	if ( primzahl == 0 )
	{
		printf(" %d ist keine Primzahl\n",z);
		printf(" %d ist ein Teiler\n",teiler);
	}
	else
	{
		printf(" %d ist eine Primzahl\n",z);
	}
	return 0;
}
 
Zuletzt bearbeitet von einem Moderator:
Hi und Willkommen bei tutorials.de,

bei
C++:
while ( (z<10 || (z>2000000000) );
fehlt eine ) hinter dem 10
Drei ( und nur zwei ) kann nicht gehen.

C++:
while (z<10 || z>2000000000);
reicht übrigens auch.
< und > werden vor || ausgewertet.
 
andere frage noch:
wie verhindere ich dass sich die konsole gleich nach ausgabe schließt sodass ich dass ergebnis anschauen kann ?
 
In dem man zB. auf eine Eingabe wartet, bevor das programm weiter zum Ende geht.
C++:
getchar();
Erst wenn Enter gedrückt wird beendet der Befehl.

Was bei solchen künstlichen Offenhaltungsmethoden abrer zu beachten ist:
Wenn man aus einer offenen Konsole heraus ein Programm startet bleibt
die Konsole auch danach von selbst offen.
Dass man in dem Fall zuerst noch Enter drücken muss, damit wieder irgendwas geht
kann a) lästig sein und b) verhindert es, dass man das Ganze automatisiert
als Teil von etwas Gröerem verwendet
 
hmm irgendwas mach ich wohl noch falsch die konsole geht trotzdem immer gleich nach ausgabe zu... muss ich die schleifen irgendwie anders machen ?
 
Zurück