Primärzahl
-
Als Rat: Kaufe dir ein gutes Buch und vergiss den Unikurs.

-
kannst es auch mit dem beispiel versuchen, wo man die primzahlen bis hundert ausgibt ...
for( nCount = 1; nCount < 100; nCount += 2 ) { bIsPrim = 1; for( nDiv = 2; nDiv <= nCount / 2; nDiv+=2 ) { if( nDiv == 4 ) nDiv--; if( nCount % nDiv == 0 ) { bIsPrim = 0; break; } } if( bIsPrim == 1 ) printf( "%2d ist eine Primzahl\n", nCount );soo long zai
-
zaiborg schrieb:
for( nDiv = 2; nDiv <= nCount / 2; nDiv+=2 )Y U NO STOP AT SQRT(nCount) ???
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ (auch C++0x und C++11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
//edit: 1 vergessen... ^^
bool isprim(unsigned val) { assert(val != 0); if(val == 1) return false; if(val < 4) return true; if(val%2 == 0) return false; for(unsigned i = 3; i < val; i += 2) { if(val%i == 0) return false; if(val/i < 2) break; } return true; }#include <iostream> int main() { for(unsigned in; std::cin >> in;) { if(isprim(in)) std::cout << "Primzahl\n"; else std::cout << "keine Primzahl\n"; } }bb
-
#include <iostream> #include <vector> bool is_prime(unsigned n) { if(n < 2) return false; if(n == 2 || n == 3) return true; if(n % 2 == 0 || n % 3 == 0) return false; for(unsigned i = 5, delta = 2; i * i <= n; i += delta, delta = 6 - delta) if(n % i == 0) return false; return true; } template <typename T, typename A> std::ostream& operator << (std::ostream& os, std::vector<T, A> const& v) { os << '['; if(v.empty()) return os << ']'; os << v.front(); for(auto iter = ++v.begin(); iter != v.end(); ++iter) os << ',' << *iter; return os << ']'; } int main() { unsigned const bounds[] = { 0, 150 }; std::vector<int> primes; for(unsigned i = bounds[0]; i <= bounds[1]; ++i) if(is_prime(i)) primes.push_back(i); std::cout << primes; }Im Prinzip ähnlich der Version von unskilled, außer dass nicht nur Vielfache von 2, sondern direkt Vielfache von 2 und 3 überprungen werden. (Auf i wird abwechselt 2 und 4 addiert.)
Und weil ich gerade Langeweile hab, hier nochmal das ganze in Haskell.

isPrimeImpl n i delta | i * i > n = True | n `mod` i == 0 = False | otherwise = isPrimeImpl n (i + delta) (6 - delta) isPrime n | n < 2 = False | n `elem` [2, 3] = True | n `mod` 2 == 0 || n `mod` 3 == 0 = False | otherwise = isPrimeImpl n 5 2 main = print $ filter isPrime [1 .. 150]
-
Nicht weil du Langeweile hast. Weil du allen zeigen willst, wie toll du in Haskell h4xX0rn kannst

-
Haskell ist halt sexy.
-
...und bis auf die tatsache, dass bei mir 1 ne primzahl ist, weil ich nen trottel bin

-
Der Tip nach
prime numbers filetype:cpp
zu googeln wäre wahrscheinlich für den OP viel hilfreicher als so einiges anderes was hier geantwortet wurde.Die üblichen Verdächtigen eben. Seufz.