C++ Programm zur Prüfung von Primzahlen funktioniert nicht Brauche Hilfe

3 Antworten

Dein Algorithmus ist völlig verkehrt. Gehen wir mal davon aus, dass x = 8 ist. y läuft von 1 bis 7, erreicht u.a. irgendwann mal die 3. 8%3 != 0, also wird pruefung auf 1 gesetzt und auch nie wieder zurück, dementsprechend ist 8 eine Primzahl. Richtig wäre:

int Pruefung= 1;
for(y=2;y<x;y++)
{
  if(x%y == 0) 
    {
    primzahl = 0;
    break;
    }
}

Kleine Frage : Warum ist Pruefung groß ? Und woher kommt primzahl ? Erklär das

1
@procoder42

Stimmt, das habe ich vertauscht.. Primzahl heißt Pruefung. Pruefung ist groß, weil ich erstmal davon ausgehe, dass eine Zahl eine Primzahl ist, bis ich das Gegenteil bewiesen habe und nicht umgekehrt.

0

Ich behaupte mal, deine Prüfung an sich ist falsch. Du gehst grundlegend davon aus, dass die eigegebene Zahl keine Primzahl ist. Dein Programm geht dann her und deklariert die eingegebene Zahl als Primzahl, wenn das erste Mal die entsprechende Abfrage korrekt durchlief.

So wird das nichts.

Gehe besser davon aus, dass die eingegebene Zahl eine Primzahl war. Denn dann musst du nur ein einziges Mal nachweisen, dass sie es nicht ist und schon passt der Lack. Einfacher machst du es dir auch, wenn du vernünftige Variablennamen verwendest:

using namespace std;

int Eingabe = 0; 
int Pruefzahl = 0; 
bool IstPrim = true;

int main() 
{ 
  cout << "Bitte geben Sie eine Ganzzahl ein:" << Eingabe;

  for(Pruefzahl = 2; Pruefzahl < Eingabe; Pruefzahl++)
  {
    if(Eingabe % Pruefzahl == 0)
    {
      IstPrim = false;
      break;
    }
  }

  if(IstPrim)
    cout << "Die Zahl ist eine Primzahl!" << endl;

  else
    cout << "Die Zahl ist keine Primzahl!"<< endl;

  system("PAUSE");
  return 0;
}

Und zu deiner Prüfbedingung (x%y!=0 && y!=1 && x!=y):

  • x % y: Das ist die eigentlich interessante Prüfung
  • y != 1: Irrelevant, da du den Startwert von y passend im Schleifenheader legen kannst
  • x != y: Irrelevant, da dieser aufgrund der Schleifenbedingung nie geschehen wird.

Das Obige habe ich jetzt mal blind getippt, ich habe hier gerade keinen C++-Compiler, den ich mal schnell anschmeissen könnte. Ich kann also nicht garantieren, dass der Source 100% fehlerfrei ist.

Der ganze Code sieht etwas seltsam aus. Allein die erste Zeile kann schon nicht funktionieren, welche Bibliothek willst du denn inkludieren?

So müsste es funktionieren, ein paar seltsame Fehler (Tippfehler?) behoben:

#include <iostream>
#include <windows.h>
using namespace std;

int x=0; int y=0; int Pruefung=0;

int main()
{

   cout << "Bitte geben sie ein Ganzzahl ein:" << endl;
   cin >> x;


   for(y=1; y<x; y++)
   {

       if(x%y!=0 && y!=1 && x!=y)
       {
           Pruefung=1;
       }
   } 
   if(Pruefung==1)
   {
      cout << "Die Zahl ist eine Primzahl!" << endl;
   }
   else
  {
      cout <<"Die Zahl ist keine Primzahl!" << endl;
  }

  cin.get();
  return 0;
}

Funktionieren heist nicht, gut laufen . Aufgrund der Schleifenbedinung kann x nicht gleich y sein . Und wenn der Startwert der Schleife 2 ist , dann können wir uns das y!=1 auch schenken

0

C++ Funktion zur Berechnung der Dauer in Sekunden?

Hallo liebe Community,

und zwar sollte ich ein Programm schreiben, dass den Benutzer nach einer Zahl in Sekunden abfragt und dann mit dem abgefragten Wert die Stunden und Minuten ausrechnet und wieder ausgibt.

Bisheriger Code:

#include <iostream> 
#include <string>
    
using namespace std;
    
    double dauerInSekunden(double stunden) {
        double ergStunden;
    
        ergStunden = stunden / 3600;
    
        return ergStunden;
    }
    
    double dauerInSekunden2(double minuten) {
        double ergMinuten;
    
        ergMinuten = minuten / 60;
    
        return ergMinuten;
    }
    
    
    
    int main() {
        string Dauer;
        double Zahl;
        cout  << "Geben Sie das Format in Zahl (Sekunden) und die Einheit in die sie umrechnen \t wollen 'Stunden', 'Minuten', 'Sekunden' an!" << endl;
        cin >> Zahl;
        cin >> Dauer;
    
        if (Dauer == "Stunden") {
            cout << dauerInSekunden(Zahl) << " Stunden" << endl;
            }
        else if (Dauer == "Minuten") {
            cout << dauerInSekunden2(Zahl) << " Minuten" << endl;
            }
        else
            cout << Zahl << " Sekunden" << endl;
    
        system("pause");
    }

Meine Frage ist nun folgende ist es möglich die Funktionen auch so um zu schreiben, dass sie nur aus einer Funktion besteht und der Benutzer immer noch angeben kann in was für ein Format er umrechnen möchte?

...zur Frage

Java Primzahlen Programm

Hey Leute, ich habe mal wieder eine Java-Aufgabe, bei welcher ich den Fehler nicht finde. Ich hoffe ihr könnt mir irgendwie weiterhelfen.

public class PrimeNumbers {

static int x = 1000;
private static boolean[] Primes = new boolean[x];

// Hier ist der "statische Konstruktor"
static {
}

private static boolean checkPrime(int number) {

    return false;
}

public static boolean isPrime(int number) {
    int limit=1000;
    int zahl;      
    int zaehler;   
    boolean primzahl; 

    for (zahl = 2; zahl <= limit; zahl++) {
        primzahl = true;

        for (zaehler = 2; zaehler <= zahl/2; zaehler++) {
            if (zahl % zaehler == 0) {
                primzahl = false;
              break;
            }

        }

        if (primzahl) {
            return true;
        }
    }
    return false;
}

Die Primzahlen, welche zu überprüfen sind werden in einer anderen Methode übergeben und abefragt. Ich habe hier das Problem, dass er mir entweder immer true oder immer false returned, egal ob es nun eine Primzahl ist oder nicht. Ich komme einfach nicht weiter, egal wie ich es drehe und wende. Ich hoffe ihr könnt mir weiterhelfen.

Grüße Dubsepp

...zur Frage

C++ IF bedingung(Anfängerproblem)

Guten Tag, wollte eben ein Übungsprogramm schreiben mit dem man einen Preisnachlass berechnen lassen kann:

Wenn man mehr als 10 Laptops kauft gibts 18% rabatt und keine versandkosten. Mein Problem ist, dass ich nicht weiss wie ich die Anzahl der Laptops in eine rechnung mit einbeziehen kann->

#include <iostream>
#include<string>

using namespace std;
int main() 

{
    double nettobetrag, nettobetragS;
    string laptops;
    cout<<"Anzahl der Laptops:  ";
    cin>>laptops;
    cout<<"Nettobetrag pro Stueck:";
    cin>>nettobetragS;



    if (laptops>"10")
    {       nettobetrag=laptops*nettobetragS;
              cout<<"Nettobetrag:"<<nettobetrag;
              .................





    }




    cout<<endl;

    return 0;

}
...zur Frage

C++ Wie kann ich den Benutzter eine Rechenart auswählen lassen. (Konsolen Anwendung)

Also ich bin dabei C++ zu lernen und ich habe schon selber versucht das dass Problem mit einer char Variable zu lösen und dann mehrere if abfragen zu erstellen aber dass funktioniert nicht ganz, außerdem ist es eine Konsolen Anwendung.Kann mir jemand helfen ?

#include <iostream>

using namespace std;

int main(){
char Rechenart;
int Summe1, Summe2, Ergebnis;

cout << "Mit welcher Rechenart wollen sie Rechnen(Multiplikation*)(Divison/)(Addition+)(Subtraktion-)";
cin >> Rechenart;
cout << "Benutzereingabe:";
cin  >> Summe1;
cout << "Benutzereingabe:";
cin  >> Summe2;

Ergebnis = Summe1 * Summe2;

getchar();

std::cout << Summe1 << Rechenart << Summe2
    << " = "
    << Ergebnis
    << std::endl;

if (true)
{
 
}

else
{

}

getchar();
return 0;
}
...zur Frage

Kann in diesem Programm die Rede von undefiniertem Verhalten sein C++?

Hier ist mein Code:

#include <iostream>
using namespace std;
int* pReturn() 
{   
int zahl = 10;   
int* pzahl = &zahl;   
return pzahl; 
}
int main() 
{   
cout << "Hello world!" << endl;   
int* pointer = pReturn();   
*pointer = 15;   
cout << *pointer;   
return 0; 
}

Also ich rufe ganz simpel eine Funktion auf und lasse sie einen Pointer auf eine Variable zurückgeben, die in der Funktion deklariert und initialisiert wird. Sollte die Variable aber nach dem reurn Befehl nicht gelöscht, bzw. freigegeben werden, sodass der Pointer auf eine Variable zeigt, die sich jederzeit durch andere Programme verändern könnte oder merkt das der Compiler schon von vorne rein und löscht diese Variable nicht? Aufjedenfall kann ich auch nach dem return Befehl in der Funktion die Variable per Pointer modifizieren und ausgeben. Ich versteh das irgendwie nicht..

...zur Frage

Das kleine 1x1 als Array?

#include <iostream>

using namespace std;

int main() {

   

  cout << endl;

  for (int zeile = 1; zeile <= 10; zeile++) {

     

    for (int spalte = 1; spalte<= 10; spalte++) {

       

      cout << zeile * spalte<< "\t";

    }

    cout << endl;

  }

   

  return 0;

}

könnt ich das auch mit Arrays machen? mit mehrdimensionalen Arrays?

vielen Dank schon mal

...zur Frage

Was möchtest Du wissen?