Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Primgolf

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 < [ 5 ] [ 6 ] [ 7 ] [ 8 ]
030
26.01.2007, 23:57 Uhr
tobias
hmm....


XD dann schreib den code in eine zeile..... ich finde es kommt nicht auf die codelänge an, sondern auf die laufzeit des programms.. wielange das zum abarbeiten braucht...

ich denke ich compiliere später erstmal 3 stunden meine primzahlliste... wer den code dann haben will, dem stell ich ein downloadlink zur verfügung.

edit: ich persönlich schreibe länger und kommentiert als irgendso eine kleine multifunktion zu basteln die letzten endes wegen dem %% und << und ++ und dem allen nicht mehr zu erkennen ist... was ist wenn man 1jahr später mal weiterarbeiten will? glaubt ihr wirklich ihr kennt euch dann in eurem kritzelcode noch aus? - nur mal so als anregung...
--
Danke

Dieser Post wurde am 26.01.2007 um 23:59 Uhr von tobias editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
031
27.01.2007, 00:55 Uhr
Bruder Leif
dances with systems
(Operator)


Der Sinn von _Golf_ ist auch nicht die Wiederverwendbarkeit, sondern eben die extreme Kuerze...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
032
27.01.2007, 01:30 Uhr
tobias
hmm....


achso nadann.. werd mir was einfallen lassen.
--
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
033
27.01.2007, 18:29 Uhr
0xdeadbeef
Gott
(Operator)


@bruder_leif: Etwa so?

C++:
#include <iostream>

template<unsigned x, unsigned i> struct num_teiler {
  static unsigned const val = (x % i == 0) + num_teiler<x, i - 1>::val;
};

template<unsigned x>             struct num_teiler<x, 0> {
  static unsigned const val = 0;
};

template<unsigned x> struct is_prime {
  static bool const val = num_teiler<x, x/2>::val == 1;
};

template<int i> struct prime_loop {
  static void run() {
    prime_loop<i-1>::run();
    std::cout << i << ":\t" << is_prime<i>::val << std::endl;
  }
};

template<> struct prime_loop<-1> {
  static void run() { }
};

int main() {
  prime_loop<50>::run();
}


...das ist ja zu einfach.

Das Problem ist nur, dass dir viele Compiler ab ner bestimmten Tiefe template-Abhängigkeit um die Ohren fliegen. Davon ganz abgesehen dauert das schon bei prime_loop<200> ewig zu kompilieren.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 27.01.2007 um 18:35 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
034
27.01.2007, 20:51 Uhr
tobias
hmm....


Jetzt will ich aber einen Lutscher...

Hier, kleiner geht es nicht... hab mir viel mühe gegeben und bestimmt 3 stunden gebastelt, mach aber noch weiter...

edit: nope mach nimmer weiter, sollte eine primzahl nicht erkannt werden, das ganze nach der %3 rechnung einfach noch mit 5 und 6, 7, 8 und 9 weitererarbeiten...

nochmal edit: achja der wo das mit: 123456781 war... ja das ist eine primzahl


C++:
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> ziffern;
    int zahl;
    int zahl_kopie;
    int letzte_ziffer;

    cout << "Zahl eingeben(MAX: 9 Zahlen): " << flush;
    cin >> zahl;
    zahl_kopie = zahl;

    while(zahl > 0)
    {
        ziffern.insert(ziffern.begin(), zahl % 10);
        zahl /= 10;
    }
    
    letzte_ziffer = ziffern[ziffern.size()-1];
    
    if(ziffern.size() == 1)
    {
        if (letzte_ziffer == 2|| letzte_ziffer == 3|| letzte_ziffer == 5|| letzte_ziffer == 7)
        {
           cout << "Ihre Zahl: " << zahl_kopie << " ist eine Primzahl\a\a\a" << endl;
        }
    }
    else if (ziffern.size() > 1)
    {
         if (letzte_ziffer == 0|| letzte_ziffer == 2|| letzte_ziffer == 4|| letzte_ziffer == 5|| letzte_ziffer == 6|| letzte_ziffer == 8)
         {
             cout << "Ihre Zahl: " << zahl_kopie << " ist leider keine Primzahl" << endl;
         }
         else
         {
             if (zahl_kopie%3 > 0)
             {
                 cout << "Ihre Zahl: " << zahl_kopie << " ist eine Primzahl\a\a\a" << endl;
             }
             else
             {
                 cout << "Ihre Zahl: " << zahl_kopie << " ist leider keine Primzahl" << endl;
             }
         }
    }
    system("PAUSE");
    return 0;
}

--
Danke

Dieser Post wurde am 27.01.2007 um 21:09 Uhr von tobias editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
035
27.01.2007, 21:02 Uhr
0xdeadbeef
Gott
(Operator)


...also ist 25 jetzt eine Primzahl?

C++:
#include <iostream>

namespace {
  bool isprime(unsigned x) {
    int i, j;

    switch(x) {
    case 2:
    case 3:
      return true;
    default:
      if(x < 5      ||
         x % 2 == 0 ||
         x % 3 == 0)
        return false;

      for(i = 5, j = 4; i * i <= x; i += (j = 6 - j)) {
        if(x % i == 0)
          return false;
      }
    }

    return true;
  }
}

int main() {
  for(unsigned i = 0U; i < 100U; ++i) {
    if(isprime(i)) std::cout << i << ' ';
  }
  std::cout << std::endl;
}


so würd ich das wohl ernsthaft anfangen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 27.01.2007 um 21:10 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
036
27.01.2007, 21:10 Uhr
tobias
hmm....


so, versuchs nochmal... hatte 2 zahlen vergessen...

wenn du wieder einen fehler findest, wieder schreiben...

ps. den neuen code fürs nochmal versuchen habe ich in den anderen editiert.

und hey... ich arbeite nochnicht lange mit c++ und das mit der switch werde ich auch noch machen... ich werde euch schonnoch den 15 zeilen code bringen... wie in php schaffe ich das auch in c++...

aber erstmal überhaupt schauen obs so läuft und dann optimieren.
--
Danke

Dieser Post wurde am 27.01.2007 um 21:13 Uhr von tobias editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
037
27.01.2007, 21:12 Uhr
0xdeadbeef
Gott
(Operator)


Wie ist es mit 49?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
038
27.01.2007, 21:15 Uhr
tobias
hmm....


ok, jetzt häng ich auch gerade... mein code ist für mich jetzt schon unübersichtlich..

dann will ich mal neu anfangen..
--
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
039
27.01.2007, 21:43 Uhr
0xdeadbeef
Gott
(Operator)



C++:
#include <iostream>

template<unsigned x, unsigned i, unsigned j, bool abort>
struct prime_aux {
  static bool const val
    = x % i != 0 &&
      prime_aux<x, i + j, 6 - j, (i * i > x || x % i == 0)>::val;
};

template<unsigned x, unsigned i, unsigned j> struct prime_aux<x, i, j, true> {
  static bool const val = true;
};

template<unsigned x> struct is_prime {
  static bool const val
    = x % 2 != 0 &&
      x % 3 != 0 &&
      prime_aux<x, 5, 2, x % 2 == 0 || x % 3 == 0>::val;
};

template<> struct is_prime<0> { static bool const val = false; };
template<> struct is_prime<1> { static bool const val = false; };
template<> struct is_prime<2> { static bool const val =  true; };
template<> struct is_prime<3> { static bool const val =  true; };
template<> struct is_prime<4> { static bool const val = false; };
template<> struct is_prime<5> { static bool const val =  true; };

template<int i> struct prime_loop {
  static inline void run() {
    prime_loop<i-1>::run();
    if(is_prime<i>::val) std::cout << i << ' ';
  }
};

template<> struct prime_loop<-1> {
  static inline void run() { }
};

int main() {
  prime_loop<100>::run();
  std::cout << std::endl;
}


Meta-Code nochmal optimiert.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 27.01.2007 um 21:46 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 < [ 5 ] [ 6 ] [ 7 ] [ 8 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: