Primzahl oder nicht Primzahl !! hilfe



  • scrub schrieb:

    versteh ich nicht falsch, ich akzeptiere ja, daß es für die genannten bedingungen vorteile hat. da aber kein anfänger quelltexte mit mehreren tausend zeilen produzieren will, existieren diese vorteile für ihn faktisch nicht. er merkt also unmittelbar nicht, daß er einen vorteil hat, kriegt aber immer zu hören "das is aber viel besser mit den namenräumen und so". und von der machart war leider die mehrzahl der postings, die sich auf die verwendung der alten/neuen header bezogen.

    Ok, man entwickelt eine Programmiersprache wie C++ aber auch nicht, um Anfängern möglichst wenig Probleme dabei zu bereiten, ihr Hello-World zu schreiben. Man entwickelt sie auch nicht, damit jeder mal schnell ne Primzahlsuche schreiben kann. Das sind nämlich alles nur Spielereien. Programmiersprachen wie C++ werden für den ernsthaften Einsatz entwickelt und da hat man es nunmal oft mit sehr großen Projekten zu tun. Generell ist doch der Sinn von höheren Programmiersprachen, die Komplexität größerer Projekte in den Griff zu kriegen, bzw. größere Projekte durch besseres Management der Komplexität überhaupt erst zu ermöglichen.

    Als Anfänger muss man dann halt öfter mal in einen sauren Apfel beißen und eine Sache erstmal akzeptieren. Man kann nicht alles sofort verstehen, sondern braucht für einige Dinge erst einen Blickwinkel, für den man einiges an Erfahrung angesammelt haben muss.



  • Gregor schrieb:

    Als Anfänger muss man dann halt öfter mal in einen sauren Apfel beißen und eine Sache erstmal akzeptieren. Man kann nicht alles sofort verstehen, sondern braucht für einige Dinge erst einen Blickwinkel, für den man einiges an Erfahrung angesammelt haben muss.

    inzwischen bin ich da einer meinung mit dir. nur warum postet nicht mal jemand DAS zur entsprechenden thematik statt "das is alt, das is doof, das is neuer und besser"?

    ich würde auch nicht drauf wetten, daß ein signifikanter anteil der user hier umfangreiche und komplexe software produziert (so daß man namenräume "und so" ernsthaft benötigt, weils anders nicht mehr geht). lasse mich aber gern vom gegenteil überzeugen.



  • #include <iostream>
    using namespace std;
    
    int main()
    {	
    	int untere_schranke = 0,
    	    obere_schranke  = 0;
    
    	// Intval einlesen
    	cout<<"Geben Sie die unter Intervalgrenze ein: ";
    	cin>>untere_schranke;
    	cout<<"Geben Sie die obere Intervalgrenze ein: ";
    	cin>>obere_schranke;
    
    	int numberOfPrimes = 0;
    
    	for(int n = untere_schranke; n <= obere_schranke; n++)
    	{
    		// ist n eine Primzahl?
    		int teiler = 2;
    
    		while(n%teiler > 0 && teiler*teiler <= n)
    		{
    			teiler++;
    		}
    
    		if(teiler*teiler > n)
    		{
    			cout<<n<<endl;;
    			numberOfPrimes++;
    		}
    
    	}	
    
    	cout<<"Anzahl von Primzahlen im Intervall: "<<numberOfPrimes<<endl;	
    }
    

    Dieser Ansatz kann noch wieter optimiert werden - in dem man nur als potientielle Teiler die zwei und dann nur noch ungerade Zahlen testet - bzw. man als Potentielle Teiler nur Primzahlen testet...

    Infos zur Thematik: www.primzahlen.de

    By the way: Von der Electronic Frontier irgendetwas Organisation werden 100000 Dolar für eine 10 Millionen stellige Mersene Primzahl geboten



  • scrub schrieb:

    inzwischen bin ich da einer meinung mit dir. nur warum postet nicht mal jemand DAS zur entsprechenden thematik statt "das is alt, das is doof, das is neuer und besser"?

    Allein zum Thema iostream habe ich mir hier über die Jahre schon die Finger Wund geschrieben und ich bin da wahrlich nicht der Einzige. Informationen wie Auflistungen der wichtigsten Unterschiede, Referenzen der alten bzw. neuen Librarys, Whitepapers usw. findet man im Netz zu hauf und Links auf solche werden hier immer und immer wieder gepostet:
    Z.B:
    http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=iostream#Answ
    http://www.langer.camelot.de/Articles/Papers/IOStreams/IOStreams.htm

    Nicht immer hat man Lust und Zeit alles zum x-ten Mal hinzuschreiben. Also muss in vielen Fällen auch einfach mal das kurze "<iostream.h> ist kein Standard und sollte in neuen Projekten besser durch <iostream> ersetzt werden" ausreichen. Wenn ein Nutzer dann, und das passiert hier nur äußerst selten, tatsächlich mal an mehr als nur der unmittelbaren Lösung seines Problems interessiert sein sollte, dann kann er ja gerne nochmal nachfragen.

    Nichtsdestotrotz behaupte ich nach wie vor: Niemand kann wirklich C++ lernen ohne mindestens wirklich ein hervoragendes C++ Buch zulesen. Ein gutes Buch kann durch kein Tutorial, kein Forum und keine Internetseite dieser Welt ersetzt werden.



  • albani schrieb:

    😞 ich habe code vergessen

    #include <iostream.h>
    
    int main()
    {
      long a, b;
      cout <<"Zahl= ";
      cin >> a;
    
      for (b=2; b < a; b++)
      {
       if( a%b == 0)
        cout <<"Ist nicht ein Primzahl" << endl;
       else
        cout <<"Ist Primzahl" << endl;
      return 0;
     }
    
    }
    

    Dein Programm funksioniert gut für die zahlen grösser als 2.

    Warum die andere sagen stimmt nicht???



  • Ja? Dann probier's mal mit einer ungeraden Zahl, die keine Primzahl ist. Zum Beispiel 9 oder 15.

    MfG Jester



  • oder gib mal eine 1 ein.



  • Nargaroth schrieb:

    hallo leute !

    ich hab ein frage für euch; die frage ist :

    Bestimmen Sie, ob eine eingegebene natürliche Zahl eine Primzahl ist.

    ich hab was geschrieben aber das programm ist nicht kompiliert.

    #include <iostream.h>
    #include <conio.h>
    int main()
    {
    int a;
    bool prime=true;
    cout<<"Geben Sie bitte eine zahl ein: ";
    cin>>a;
    for(int divisor=a-1; divisor>1; divisor--)
    if(a%divisor==0)
    prime=false;
    if(prime)
    cout<<a<<" ist Primzahl"<<endl;
    if(!prime)
    cout<<a<<" is nicht Primzahl"<<endl;

    return 0;
    }

    wo liegt mein fehler?

    lg nargaroth

    letztes Jahr haben wir diese Beispiel so gemacht:

    #include <iostream.h>
    
    int main()
    {
     int x, y;
      cout <<"Zahl= ";
      cin >> x;
      y = 2;
      while(y < x)
       {
        if( x%y == 0)
         {
          cout << "ist nicht Primzahl" << endl;
          x = 0;
         }
         y = y + 1;
        } 
        if(x>0)   
        cout <<"Ist Primzahl" << endl;
      return 0;
     }
    


  • Oh nein... überlegt mal ganz genau was <iostream> denn ist.



  • #include <iostream.h>
    #include <math.h>
    
    bool isprim(int zahl)
    {
       if(zahl<4)return true;
       else if(!(zahl%2))return false;
       else
       {
          cout << endl << sqrt(zahl) << endl;
          for(int i=5;i<sqrt(zahl);i+=2)if(!(zahl%i)) return false;
          return true;
       }
    }
    int main(int argc, char* argv[])
    {
       int zahl;
       cin >> zahl;
       if(isprim(zahl)) cout << "Primzahl";
       else cout << "Keine Primzahl";
       return 0;
    }
    

    Der Vollständigkeit halber wiederholt. 🙄



  • Hä ?

    bool isprim(int zahl)
    {
       if(zahl<4)return true;
       else if(!(zahl%2))return false;
       else
       {
          for(int i=5;i<sqrt(zahl);i+=2)if(!(zahl%i)) return false;
          return true;
       }
    }
    int main(int argc, char* argv[])
    {
       int zahl;
       cin >> zahl;
       if(isprim(zahl)) cout << "Primzahl";
       else cout << "Keine Primzahl";
       return 0;
    }
    


  • [quote="Nargaroth"]hallo leute !

    ich hab ein frage für euch; die frage ist :

    Bestimmen Sie, ob eine eingegebene natürliche Zahl eine Primzahl ist.

    ich hab was geschrieben aber das programm ist nicht kompiliert.

    #include <iostream.h>
    #include <conio.h>
    int main()
    {
    int a;
    bool prime=true;
    cout<<"Geben Sie bitte eine zahl ein: ";
    cin>>a;
    for(int divisor=a-1; divisor>1; divisor--)
    if(a%divisor==0)
    prime=false;
    if(prime)
    cout<<a<<" ist Primzahl"<<endl;
    if(!prime)
    cout<<a<<" is nicht Primzahl"<<endl;

    return 0;
    }

    wo liegt mein fehler?

    lg nargaroth[/quote]

    das Programm läuft so nicht du musst erst noch vor return 0; getch(); eingeben dann läuft es



  • HumeSikkins schrieb:

    Nichtsdestotrotz behaupte ich nach wie vor: Niemand kann wirklich C++ lernen ohne mindestens wirklich ein hervoragendes C++ Buch zulesen. Ein gutes Buch kann durch kein Tutorial, kein Forum und keine Internetseite dieser Welt ersetzt werden.

    da kann ich dir widerstreben, bin ein lebendes beispielt dazu.
    ich hab mit turbo pascal angefangen zu programmieren, damals hab ich die borland docu zu TP gelesen. Zu C++ hab ich nur grob gelesen wie der syntax und die semantik der sprache ist, ein richtiges, geschweige den gutes, c++ buch habe ich nie besessen. trotzdem proggy ich jetzt in c++ als ob das meine natürliche sprache wär ( übertrieben ).

    @hanna1: getch(); ist doch blos dazu da, das das fenster mit der ausgabe nicht gleich wieder verschwindet, wenn man das prog aus der IDE oder windows explorer startet.



  • [quote="DEvent"][quote="HumeSikkins"]
    Nichtsdestotrotz behaupte ich nach wie vor: Niemand kann wirklich C++ lernen ohne mindestens wirklich ein hervoragendes C++ Buch zulesen. Ein gutes Buch kann durch kein Tutorial, kein Forum und keine Internetseite dieser Welt ersetzt werden.[/quote]
    da kann ich dir widerstreben, bin ein lebendes beispielt dazu.
    ich hab mit turbo pascal angefangen zu programmieren, damals hab ich die borland docu zu TP gelesen. Zu C++ hab ich nur grob gelesen wie der syntax und die semantik der sprache ist, ein richtiges, geschweige den gutes, c++ buch habe ich nie besessen. trotzdem proggy ich jetzt in c++ als ob das meine natürliche sprache wär ( übertrieben ).

    @hanna1: getch(); ist doch blos dazu da, das das fenster mit der ausgabe nicht gleich wieder verschwindet, wenn man das prog aus der IDE oder windows explorer startet.[/quote]

    Ich habe herausgefunden das die Programme die ich aus dem Forum herunter lade und kompiliere nicht laufen, wenn ich conio.h nicht includiert habe und getch(); in der main Funktion eingegeben habe. Wenn ich nur getch(); eingebe sagt mir mein Compiler das getch(); nicht deklariert wäre warum weiss ich nicht.



  • Hi,

    DEvent schrieb:

    da kann ich dir widerstreben, bin ein lebendes beispielt dazu.
    ich hab mit turbo pascal angefangen zu programmieren, damals hab ich die borland docu zu TP gelesen. Zu C++ hab ich nur grob gelesen wie der syntax und die semantik der sprache ist, ein richtiges, geschweige den gutes, c++ buch habe ich nie besessen. trotzdem proggy ich jetzt in c++ als ob das meine natürliche sprache wär ( übertrieben ).

    da kann ich dir, wenn auch widerstrebend, widersprechen. Jemand der nur grob Syntax und Semantik kennt, kann wohl kaum C++ als Muttersprache sprechen. Es kann auch niemand behaupten, er könne Deutsch in jeglicher hinsicht, ohne ab und an mal in den Duden zu schauen.

    Viele Grüße,

    Mata



  • [quote="52X"][quote="Nargaroth"]hallo leute !

    ich hab ein frage für euch; die frage ist :

    Bestimmen Sie, ob eine eingegebene natürliche Zahl eine Primzahl ist.

    ich hab was geschrieben aber das programm ist nicht kompiliert.

    #include <iostream.h>
    #include <conio.h>
    int main()
    {
    int a;
    bool prime=true;
    cout<<"Geben Sie bitte eine zahl ein: ";
    cin>>a;
    for(int divisor=a-1; divisor>1; divisor--)
    if(a%divisor==0)
    prime=false;
    if(prime)
    cout<<a<<" ist Primzahl"<<endl;
    if(!prime)
    cout<<a<<" is nicht Primzahl"<<endl;

    return 0;
    }

    wo liegt mein fehler?

    überhaupt kein Fehler das Programm läuft astreine

    lg nargaroth[/quote]

    letztes Jahr haben wir diese Beispiel so gemacht:

    #include <iostream.h>
    
    int main()
    {
     int x, y;
      cout <<"Zahl= ";
      cin >> x;
      y = 2;
      while(y < x)
       {
        if( x%y == 0)
         {
          cout << "ist nicht Primzahl" << endl;
          x = 0;
         }
         y = y + 1;
        } 
        if(x>0)   
        cout <<"Ist Primzahl" << endl;
      return 0;
     }
    

    [/quote]


Anmelden zum Antworten