primzahlen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

primzahlen

Beitrag von Ambience »

Hallo, ich hatte mal die Aufgabe einen möglichst kurzen code zu schreiben der auch relativ schnell arbeitet für eine primzahlenfunktion..

so das habe ich vollendet und wollte einfach mal fragen ob ihr vllt. noch was findet wie ich den code evtl. noch kürzer bekomme bzw. optimieren kann..

(ist in c++ aber ich glaube das dürfte kein problem sein..

Code: Alles auswählen

#include <iostream>
#include <cmath>
using namespace std;

bool is_prime(unsigned long long int zahl);

bool is_prime(unsigned long long int zahl)
{
     if (zahl == 2)
     {
         return true;
     } 
     
     if (zahl < 2 || zahl%2 == 0)
     {
         return false;
     }    
     
     for (int i = 3; i*i <= zahl; i+=2)
     {
         if (zahl%i == 0)
         {
             return false;
         }
     }
     
     return true;
}

int main(void)
{
    unsigned long long int zahl;
    cout << "Zahl eingeben: " << flush;
    cin >> zahl;
    
    if (is_prime(zahl))
    {
        cout << "ist prime" << endl;
    }
    else
    {
        cout << "ist net prime" << endl;
    }
    system("PAUSE");
    return 0;
}
hauptsächlich geht es um diesen bereich:

Code: Alles auswählen

bool is_prime(unsigned long long int zahl) 
{ 
     if (zahl == 2) 
     { 
         return true; 
     } 
      
     if (zahl < 2 || zahl%2 == 0) 
     { 
         return false; 
     }    
      
     for (int i = 3; i*i <= zahl; i+=2) 
     { 
         if (zahl%i == 0) 
         { 
             return false; 
         } 
     } 
      
     return true; 
} 
Lonline
Gesperrt
Beiträge: 383
Registriert: 31.05.2006 14:57
Wohnort: nähe Köln
Kontaktdaten:

Beitrag von Lonline »

andere frage an dich hast du nen c++ oder c+ compiler? ich brauch einen.
DrWixxer
Mitglied
Beiträge: 202
Registriert: 28.09.2005 21:12
Wohnort: Stadtbergen

Beitrag von DrWixxer »

Lonline hat geschrieben:andere frage an dich hast du nen c++ oder c+ compiler? ich brauch einen.
dann gehste mal auf www.google.de und suchst dir einen. Und spammst wegen deinen Bedürfnissen nicht mer offtopic Spam in anderer Leuts Beiträge.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Ich sehe das auf Anhieb keine großartigen Optimierungsmöglichkeiten - zumindest sofern es nicht schnellere Algorithmentechniken gibt. Allerdings ist die Bekanntmachung der Funktion direkt vor ihrer Definition unsinnig - das dürfte aber höchstens den Compiler bremsen - und ich sehe nicht wofür du die Headerdatei cmath brauchst (wobei mir der Aufruf system("PAUSE") absolut nichts sagt)...
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

stimmt cmath hatte ich vorher für eine andere technik..

system("PAUSE"); macht nur sowas: Drücken Sie eine beliebige Taste...

das ist einfach da, dass sich das fenster nicht gleich schließt...

warum ist die bekanntmachung unsinnig? - in meinem c++ buch steht, das es nötig ist...

und zum compiler: hab den von bloodshed wxDev-C++

edit: sich wunder warum das in coding und technik verschoben wurde - dachte in coding und technik geht es eher um php, deswegen hatte ich es ins smalltalk gepostet.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Nein in Coding und Technik geht es um jede Art von Code - auch wenn hauptsächlich um php und Forum...

Meines Wissens ist es nur dann nötig eine Funktion bekannt zu machen, wenn die tatsächliche Definition der Funktion entweder zu einem späteren Zeitpunkt erfolgt (also z.B. ein Aufruf "A(a,b);" in Funktion B vor der Definition von A(int a, int b) ) oder aber die Definition in einer anderen Datei zu finden ist, die nach der Compilation hinzugelinkt wird. (also z.B. Definition von A(int a, int b) in Datei D, Verwendung in Datei E die keine Anweisung der Art #include "D" enthält). Nichts anderes passiert i.a. in Headerdateien. Da wird eine Reihe von Funktionsprototypen aufgelistet die in der hinzugelinkten Quellcodedatei oder der DLL dann "ausformuliert" sind.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

ahso,

danke.
Antworten

Zurück zu „Coding & Technik“