# Programm zur Primzahlerkennung



## Escobar89 (13. Juni 2013)

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

```
#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;
}
```


----------



## sheel (13. Juni 2013)

Hi und Willkommen bei tutorials.de,

bei

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


```
while (z<10 || z>2000000000);
```
reicht übrigens auch.
< und > werden vor || ausgewertet.


----------



## Escobar89 (14. Juni 2013)

Top, danke dir. So ein dummer Fehler hab ich voll überlesen...


----------



## Escobar89 (14. Juni 2013)

andere frage noch:
wie verhindere ich dass sich die konsole gleich nach ausgabe schließt sodass ich dass ergebnis anschauen kann ?


----------



## sheel (14. Juni 2013)

In dem man zB. auf eine Eingabe wartet, bevor das programm weiter zum Ende geht.

```
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


----------



## Escobar89 (24. Juni 2013)

hmm irgendwas mach ich wohl noch falsch die konsole geht trotzdem immer gleich nach ausgabe zu... muss ich die schleifen irgendwie anders machen ?


----------



## ComFreek (24. Juni 2013)

Versuch es mal mit:

```
cin.get();
```


----------



## Escobar89 (24. Juni 2013)

ne des haut garned hin...


----------



## Jennesta (24. Juni 2013)

Escobar89 hat gesagt.:


> ne des haut garned hin...



manchmal hilft ein 
	
	
	



```
fflush(stdin);
```
 vor getchar() falls dein Eingabepuffer noch beschrieben ist.
Ansonsten kannst du dein Programm auch unter "cmd" ausführen, dann bleibt die Konsole auf jeden Fall offen.


----------



## Escobar89 (24. Juni 2013)

geflusht hab ich schon vor dem getchar aber geht trotzdem nicht.
was bedeutet unter cmd ausführen?


----------



## deepthroat (24. Juni 2013)

Zeig mal deinen jetzigen Code.

Mit "unter cmd ausführen" ist gemeint, dass du eine Eingabeaufforderung öffnest und dann Programm dann von da aus aufrufst. Auch wenn dein Programm beendet wird, ist das Fenster der Eingabeaufforderung noch vorhanden.


----------

