019
25.01.2007, 18:11 Uhr
tobias
hmm....
|
also ich hab zwar 109 zeilen code, aber durch die kommentare halt...(sonst glaube ich 59 oderso)
ich hab es ganz anders gelöst, und es lässt sich kompilieren und funktioniert wunderbar...
Hier mal mein Code:
C++: |
#include <iostream> using namespace std;
// // prototype unsere prime funktion // int prime(int zahl);
// // das dos fenster // int main(void) { // // der speicher für die eingegebene zahl // int eingabe; cout << "110 fuer Abbrechen" << '\n' << endl; // // wenn man 110 eingibt, wird programm beendet ansonsten einfach fortgefahren // while(eingabe != 110) { cout << "Bitte gib deine Zahl ein, welche geprueft werden soll" << endl; cin >> eingabe; // // wenn unsere zahl eine prime ist... // if (prime(eingabe)) { // // dann richtig ausgeben // cout << "Zahl ist eine Primzahl" << "\a\a\a" << '\n' << endl; } else { // // ansonsten das es keine ist // cout << "Zahl ist leider keine Primzahl" << '\n' << endl; } }; return 0; }
// // die primfunktion // int prime(int zahl) { // // wird als rückgabewert (true/false) benötigts // bool isprime = false; // // alle primzahlen(noch bei weitem nicht alle) // int primes[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997 }; // // für die for schleife werden nun alle elemente des arrays gezählt // int elements = sizeof(primes)/sizeof(primes[0]); // // falls die zahl in unserem primearray vorkommt, ist es eine primezahl // for(int i = 0; i < elements; i++) { if (primes[i] == zahl) { isprime = true; } } return isprime; }
|
Ich arbeite erst seit 2 wochen mit c++ aber hoffe, das es schonmal ein guter ansatz ist und würde mich über kritik freuen...
Wer es nicht kopieren will und compilieren, dem hab ich das mal als rar datei auf mein space geladen: www.greatbook.de/prime.rar
achja, bitte nix gegen meinen stil sagen... ich code so seit jahren in php und hier hab ich(muss ich ehrlich zugeben) mehr kommentiert alls es bräuchte.
edit: man könnte noch nach: isprime = true; ein break; reinhauen... würde evtl. noch die laufzeit der for verbessern.
edit2: werd mich gleich mal auf ne neue version hinsetzen, dazu muss ich noch forschen wie man variablen typen unterscheiden kann.(deshalb keine 15 zeilen version).. das ich alles was double ist, schonmal rausnehme, weil dieses ja automatisch keine prim ist. -- Danke Dieser Post wurde am 25.01.2007 um 18:17 Uhr von tobias editiert. |