c++ primzahl berechnung?!
-
Gute Morgen leibe Community,
ich habe ein kleines Problem mit meinem Programm zur Bestimmung von Primzahlen.///////////////////////////////////////////////////////////////////////// #include<stdio.h> #include<math.h> #pragma argsused #include<stdlib.h> int isprimzahl(int eingabe); int main(); int szahl, durchlauf,a,eingabe; do { printf("Bitte entscheiden Sie, welche Pruefung sie durchfuehren wollen! \n\n"); printf("Druecken sie fuer die Primzahlpruefung bitte die 1!!!! \n\n"); printf("Druecken sie die 2 fuer eine Liste bestimmter Primzahlen! \n\n"); scanf("%i",&szahl); fflush(stdin); switch(szahl) { printf("Bitte geben Sie die Zahl ein,die geprueft werden soll \n"); scanf("%i",&eingabe); fflush(stdin); case 1 :printf(" Sie haben sich fuer die Primzahlpruerung entschieden!\n"); a=isprimzahl(eingabe) ; if(a==1) { printf("\nDie Eingegebene Zahl ist eine Primzahl\n"); } else { printf("\nDie Eingegebene Zahl ist keine Primzahl\n"); } break; case 2:printf(" Sie haben sich fuer die Liste bestimmter Primzahlen entschieden\n"); break; } fflush(stdin); printf("Moechten sie das Programm nochmal starten? Fuer ja=1 und fuer nein =0"); scanf("%i",&durchlauf); system("cls"); } while(durchlauf==1); getchar(); return 1; } /////////////////////////////////////////////////////////////////////////////// int isprimzahl(int eingabe); int h; int prim=1; { for(h=2;h<eingabe;h++) { if(eingabe%h==0) { prim=0; } if(prim==1) { return(1); } else { return(0); } } getchar();
Mein Problem ist,dass das Programm nach der Rechnung wieder nach oben springen soll und in Case 1 die Lösung ausgeben soll.Ich habe mich schon umgesehen, aber noch keine Hilfe für mein Problem gefunden.
MfG Peter
//Tags
-
Hallo,
bevor ich mir das durchlese, bitte ich dich Code Tags zu verwenden. Ich möchte doch nicht an Augenkrebs sterben.Um Primzahlen zu berechnen bietet sich an, mit Modulo zu arbeiten. Außerdem: Was soll den das Semikolon hinter main? Kann es außerdem sein, dass da C drin ist??
lg, freakC++
-
meinst das bringt was
///////////////////////////////////////////////////////////////////////// #include<stdio.h> #include<math.h> #pragma argsused #include<stdlib.h> int isprimzahl(int eingabe); int main(); int szahl, durchlauf,a,eingabe; do { printf("Bitte entscheiden Sie, welche Pruefung sie durchfuehren wollen! \n\n"); printf("Druecken sie fuer die Primzahlpruefung bitte die 1!!!! \n\n"); printf("Druecken sie die 2 fuer eine Liste bestimmter Primzahlen! \n\n"); scanf("%i",&szahl); fflush(stdin); switch(szahl) { printf("Bitte geben Sie die Zahl ein,die geprueft werden soll \n"); scanf("%i",&eingabe); fflush(stdin); case 1 :printf(" Sie haben sich fuer die Primzahlpruerung entschieden!\n"); a=isprimzahl(eingabe) ; if(a==1) { printf("\nDie Eingegebene Zahl ist eine Primzahl\n"); } else { printf("\nDie Eingegebene Zahl ist keine Primzahl\n"); } break; case 2:printf(" Sie haben sich fuer die Liste bestimmter Primzahlen entschieden\n"); break; } fflush(stdin); printf("Moechten sie das Programm nochmal starten? Fuer ja=1 und fuer nein =0"); scanf("%i",&durchlauf); system("cls"); } while(durchlauf==1); getchar(); return 1; } /////////////////////////////////////////////////////////////////////////////// int isprimzahl(int eingabe); int h; int prim=1; { for(h=2;h<eingabe;h++) { if(eingabe%h==0) { prim=0; } if(prim==1) { return(1); } else { return(0); } } getchar();
-
helpedff schrieb:
meinst das bringt was
Bei den fehlenden Einrückungen, nein, nicht wirklich. Der Code ist extrem unleserlich. Zudem bist du im falschen Unterforum (zumindest sehe ich beim überfliegen kein C++, sondern ausschließlich C).
Zudem ist das getchar (Zeile 101) außerhalb einer Funktion fehlplatziert, oder es fehlt hier Code. Von anderen Unsitten wie globalen Variablen etc. einmal abgesehen.
P.S: Und WAS funktioniert nicht. Du hast keinerlei Frage gestellt. Meinst du etwa das wir deinen Code erst selbst linken müssen?
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Wenn man alles an die richtige Stelle tut, funktioniert es sogar.
#include <stdio.h> #include <math.h> #include <stdlib.h> int isprimzahl(int eingabe); int main() { int szahl, durchlauf, a, eingabe; do { printf("Bitte entscheiden Sie, welche Pruefung Sie durchfuehren wollen.\n"); printf("Druecken Sie fuer die Primzahlpruefung bitte die 1.\n"); printf("Druecken Sie die 2 fuer eine Liste bestimmter Primzahlen.\n"); scanf("%i", &szahl); fflush(stdin); switch (szahl) { case 1: printf("Bitte geben Sie die Zahl ein, die geprueft werden soll.\n"); scanf("%i", &eingabe); fflush(stdin); printf("Sie haben sich fuer die Primzahlpruefung entschieden.\n"); a = isprimzahl(eingabe); if(a == 1) { printf("Die eingegebene Zahl ist eine Primzahl.\n"); } else { printf("Die eingegebene Zahl ist keine Primzahl.\n"); } break; case 2: printf("Sie haben sich fuer die Liste bestimmter Primzahlen entschieden\n"); break; } printf("Moechten sie das Programm nochmal starten? Fuer ja=1 und fuer nein=0: "); scanf("%i", &durchlauf); fflush(stdin); } while(durchlauf == 1); return 1; } /////////////////////////////////////////////////////////////////////////////// int isprimzahl(int eingabe) { int h, prim = 1; for(h = 2; h < eingabe; h++) { if(eingabe % h == 0) { prim = 0; break; } } return prim; }
-
Einrücker vD schrieb:
int isprimzahl(int eingabe) { int h, prim = 1; for(h = 2; h < eingabe; h++) { if(eingabe % h == 0) { prim = 0; break; } } return prim; }
^^ man muss doch nur bis sqrt(eingabe) suchen. es reicht ja, wenn ein teiler gefunden ist. und vorher noch auf teilbarkeit durch 2 checken, dann also:
if (eingabe & 1 == 0) return 0; for (h = 3; h*h <= eingabe; h+=2) { ... }