Wert auf Primzahl prüfen



  • Hallo

    Wie kann ich ein Programm schreiben, daß mir den eingegebenen Wert auf
    eine Primzahl prüft ?
    Hab hier schon begonnen, komme aber nicht mehr weiter.

    #include<iostream.h>

    bool prim1(int x)
    {
    bool b=true;
    return b;
    }

    void main()
    {

    int zahl;
    cout<<"Primzahltest!"<<endl;
    cout<<"Bitte geben Sie eine ganze Zahl ein: ";
    cin>>zahl;
    if(prim1(zahl))
    cout<<"Primzahl"<<endl;
    else
    cout<<"keine Primzahl"<<endl;

    }

    Floyd757



  • 1. Code Tags
    2. iostream.h
    3. void main
    4. ich finde irgendwie die frage gehört nach Rund Um Die Programmierung
    5. bool b=true; return b; ist n bisschen unsinnig
    6. die einfachste möglichkeit zum testen: alle zahlen (i) von 2 bis x/2 (ok, int(sqrt(x)+1) geht auch) ob x%i==0, wenn für ein einziges i ja, dann ist es keine primzahl



  • siehe auch:

    C/C++-Ecke » Betriebssysteme » Linux/Unix » Programm unter Win schneller als unter Lin ?! (Seite 1)
    Programm unter Win schneller als unter Lin ?!

    Folgende am_* Funktion ist der "C-lib of math routines" von Armand Turpel entnommen
    http://www.2357.a-tu.net/index.php?link=Software

    /* do we have a prime number ? */
    int am_primetest(int t)
    {
      int a=5;
      if (t<4)
        {
          if (t==2)
            return 1;
          if (t==3)
            return 1;
          return -1;
        }
      if (t%2==0)
        return -1;
      if (t%3==0)
        return -1;
      while (a*a<=t)
        {
          if (t%a==0)
            return -1;
          if (t%(a+2)==0)
            return -1;
          a=a+6;
        }
      return 1;
    }
    


  • Oben rechts ist rot die Suche, da kann man draufklicken, dann ein Suchwort eingeben, und das ganze abschicken. Ist ganz leicht, probiers mal.



  • @Lars: also das hätte selbst ich mir verkniffen. weil die suche ist eine strafe



  • Gibts man bei der Suche "Primzahlen" ein ist direkt der 2 Thread mit mehreren Algorithmen ausgestattet einfacher und schneller gehts in dem Fall net.



  • #include <iostream>
    #include <conio.h>
    #include <cmath> 
    using namespace std;
    
    bool isPrim_Brutal( long long kandidat )
    {
       bool prim = true;
       for( long long i=2; i<=kandidat-1; ++i )
       {
          if( kandidat%i == 0 )
          {
             prim = false;
             break;
          }
       }
       return prim;
    }
    
    bool isPrim_Sieb(long long kandidat) 
    {
        long long i = 2;
        if ( !(kandidat%i) ) 
            return false;
        else i=3;
        do
        { 
            if (!(kandidat%i)) 
                return false;
            i+=2;
        } 
        while ( i*i <= kandidat );
        return true;
    } 
    
    int main()
    {
        long long a,b;
        cout << "Zahl1: ";
        cin >> a;
        cout << "Zahl2: ";
        cin >> b;
        for( long long i=a; i<b; ++i )
    //    if( isPrim_Brutal(i) )
        if( isPrim_Sieb(i) )
            cout << i << '\t';  
        cout << endl << "Fertig!" << endl;
        getch();
    }
    


  • Hi!

    Vielleicht auch ganz interessant, der Primzahltest von meinem Dozenten. Dort werden alle Primzahlen bis zu einer bestimmten größe ermittelt und in einer Menge gespeichert:
    http://www.fh-wedel.de/~si/vorlesungen/c/beispiele/set/sieb.html

    Code-Hacker


Anmelden zum Antworten