Primzahl ausgeben
-
Hy!
Bin neu hier und brauche mal bitte eure Hilfe.
Hab in der Schule ne Aufgabe aufbekommen.Die Aufgabe lautet eine Zahl N zwischen 1 und 20 einzulesen und das Programm soll mir dann die ersten N Primzahlen heraus suchen und ausgeben.
Nun hänge ich leider schon etwas länger an der Aufgabe und komme nicht wirklich weiter.
Es werden irgendwie immer nur die Zahlen 2 und 3 ausgegeben.
Aber ich weiss leider nicht woran es liegt.
Könnt ihr mir bitte helfen?Hier nun mein Quell Code:
#include "stdafx.h" #include <stdio.h> bool isPrime(int pz) { int i=0; int r=0; switch(pz) { case 0: return false; break; case 1: return false; break; case 2: return true; break; case 3: return true; break; case 4: return false; default: for (i=1; i< pz/2; i++) { r== pz % i; if (r==0) return false; } return true; } } void main(){ int n=0; int GP=0; int Z=0; bool res; while (n<1||n>20) { printf ("Bitte geben Sie eine Ganzzahl >1 und <20 ein \n"); scanf("%d", &n); } while (GP<n) { res = isPrime (Z); if (res) { printf ("%d \n", Z); GP=GP+1; } Z=Z+1; } }
gruss Andreas
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C (C89 und C99) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
for (i=2; i< pz/2; i++)
-
r= pz % i; ... while (Z<n)
-
Ein genereller Ansatz:
int IsEven(unsigned int v) { return(!(v & 1)); } int IsPrime(unsigned int v) { unsigned int end,i; if(v==1) return(0); if(v==2) return(1); if(IsEven(v)) return(0); end=sqrt(v); for(i=3;i<=end; i+=2) if((v%i)==0) return(0); return(1); }
-
Danke!
hat geklappt!
-
Wie sieht dein fertiger Code aus?
(Suchmaschinenhilfe: Primzahlen in C )
-
Vicious Falcon schrieb:
Ein genereller Ansatz:
int IsEven(unsigned int v) { return(!(v & 1)); } int IsPrime(unsigned int v) { unsigned int end,i; if(v==1) return(0); if(v==2) return(1); if(IsEven(v)) return(0); end=sqrt(v); for(i=3;i<=end; i+=2) if((v%i)==0) return(0); return(1); }
Den hier find ich schick für Anfänger:
int isPrime(unsigned int v) { unsigned int n = 2; while(v % n && n <= v) ++n; return v == n; }
-
ich habe das selbe problem, nur einen anderen code und wollte auch erstmal bei meinem code bleiben. ich habe das in einen neuen topic verfasst und bitte um tipps: