Seite 1 von 1

primzahlen

Verfasst: 28.01.2007 16:03
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; 
} 

Verfasst: 28.01.2007 16:54
von Lonline
andere frage an dich hast du nen c++ oder c+ compiler? ich brauch einen.

Verfasst: 28.01.2007 17:15
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.

Verfasst: 28.01.2007 19:05
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)...

Verfasst: 28.01.2007 19:54
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.

Verfasst: 28.01.2007 20:02
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.

Verfasst: 28.01.2007 20:16
von Ambience
ahso,

danke.