Wie bestimme ich eine Primzahl? mit C++

hallo…

ich bin anfänger in sachen c++ programmierung. und da taucht schon mal ne frage auf…

mit den schleifen und anweisungen kenn ich mich noch nicht so gut aus. jetzt hab ich ein übungsbeispiel gefunden, das wie folgt lautet:

Lesen sie eine beliebige natürliche Zahl ein und bestimmen sie ob es sich um eine primzahl handelt.

was eine primzahl ist, ist mir klar. das ist ein zahl die nur durch sich selbst oder durch 1 teilbar ist.

ich soll dieses irgendwie mit modulo (gibt glaub ich den rest einer division aus) lösen? modulo versteh ich übrigends auch nicht.

kann mir jemand mit einer lösung bzw ansatz helfen ???

danke

ungefähr so:

boolean isPrimzahl(int zahl)
{
 for (int i = 2; i 

Nicht wirklich gut gelöst, aber vielleicht wird das Prinzip klar. Modulo ist der Divisionsrest einer Ganzzahldivision, wenn der 0 ist, dann hat sich eine Teil durch eine andere teilen lassen (ohne Rest)


> <small>[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]</small>

bei mir mag das von ihnen vorgeschlagene programm bzw. lösung einfach nicht richtig ausführen… oder ich war einfach zu blöd um es richtig umzusetzen :wink:

ungefähr so:

boolean isPrimzahl(int zahl)

das kann ich doch weglassen oder? das kenne ich nicht.

{
for (int i = 2; i

Hallo,

schau mal bei http://www.volkard.de/vcppkold/doschleife.html vorbei.

Jam

Hallo Bruno,

boolean isPrimzahl(int zahl)
{
for (int i = 2; i ; i++)
if (zahl % i == 0)
return false;
return true;
}

So ist es dann schon fast doppelt so schnell !
MfG Peter(TOO)

boolean isPrimzahl(int zahl)
{
for (int i = 2; i

Hallo, wir sind hier im C/C++ Forum, das sieht verdächtig nach Java aus :wink:

In C würde das wohl so gehen:

BOOL IsPrimzahl(int zahl)
{
 for (int i = 2; i 
Das sollte eigentlich nicht bis _zahl_ oder _zahl / 2_ laufen sondern bis zur Wurzel aus _zahl_, aber die Wurzelfunktion fällt mir so auf die Schnelle nicht ein :wink: Denn wenn es einen Teiler gibt, ist der kleinste davon immer 

boolean isPrimzahl(int zahl)
{
for (int i = 2; i ; i++)
if (zahl % i == 0)
return false;
return true;
}

So ist es dann schon fast doppelt so schnell !
MfG Peter(TOO)

Hallo Peter,

noch besser wäre doch nur die ungeraden Zahlen auszuprobieren also i+=2! Die Schleife muß man dann halt ändern (i=1…)!

MfG Andi!