Schrift
[thread]11906[/thread]

primzahlen

Leser: 2


<< >> 9 Einträge, 1 Seite
Gast Gast
 2008-05-23 18:48
#110189 #110189
Hi!

Wie kann ich mit Perl am schnellsten Primzahlen finden bzw testen ob eine Zahl eine Primzahl?
pq
 2008-05-23 19:55
#110192 #110192
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
z.b. mit CPAN:Math::Prime::XS.
wenn es dir eher um die aufgabe geht, dann bastel z.b. ein sieb des eratosthenes.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
#Kein Kommentar
 2008-05-23 20:16
#110194 #110194
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
oder benutze diesen code (hab ich mal vor einer ewigkeit geschrieben)

Code: (dl )
1
2
3
4
5
6
7
8
9
sub prime_number{
return 0 if (int ($_[0]) != $_[0]);

foreach my $divider (2..sqrt($_[0])) {
my $quotient = $_[0] % $divider;
return 0 if ($qoutient == 0);
}
return 1;
}


edit:// nach dubus eintrag verbessert
Last edited: 2009-03-29 13:26:31 +0200 (CEST)
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
Dubu
 2008-05-24 13:08
#110212 #110212
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Die Abfrage auf int ($_[0]) != $_[0] sollte man vor der Schleife machen.

Ansonsten: Wikipedia:Primzahltest (ausfuehrlicher ist die englische Version).
Gast Gast
 2008-05-24 23:25
#110249 #110249
Danke, bis ich damit unterfordert bin, werde ich es mit dem Modul versuchen.
Gast Gast
 2008-05-26 20:56
#110323 #110323
#Kein Kommentar+2008-05-23 18:16:12--
oder benutze diesen code (hab ich mal vor einer ewigkeit geschrieben)

Code: (dl )
1
2
3
4
5
6
7
8
9
sub prime_number{
return 0 if (int ($_[0]) != $_[0]);

foreach my $divider (2..sqrt($_[0])) {
my $quotient = $_[0] % $DIVIDER;
return 0 if ($qoutient == 0);
}
return 1;
}


edit:// nach dubus eintrag verbessert


habe diesen Code in einem Script getestet und bin zum Schluss gekommen, dass noch ein
Code: (dl )
return 0 if $_[0] == 1;
hineingehört.
Linuxer
 2008-05-26 23:23
#110326 #110326
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Fällt mir jetzt erst auf:

Code: (dl )
1
2
3
4
5
6
7
8
9
sub prime_number{
return 0 if (int ($_[0]) != $_[0]);

foreach my $divider (2..sqrt($_[0])) {
my $quotient = $_[0] % $DIVIDER;
return 0 if ($qoutient == 0);
}
return 1;
}


Ist das korrekt und beabsichtigt, dass es mal $divider und mal $DIVIDER lautet?
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Dubu
 2008-05-27 00:50
#110332 #110332
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Weder, noch. :)
#Kein Kommentar
 2008-05-27 17:52
#110376 #110376
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
pure absicht ;)
nein, war ein tippfehler... wie gesagt das script ist uralt...
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
<< >> 9 Einträge, 1 Seite



View all threads created 2008-05-23 18:48.