Primzahlen mit Perl ...J, ssl, maxima, awk und bash

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Primzahlen mit Perl ...J, ssl, maxima, awk und bash

Beitrag von linuxCowboy » 14.07.2013 18:56:48

Ausgangspunkt:

Code: Alles auswählen

perl -lne '(1x$_) !∼ /^1?$|^(11+?)\1+$/ && print "$_ is prime"'
implemented:

Code: Alles auswählen

seq 100|perl -lne '$\="";(1x$_) !~ /^1?$|^(11+?)\1+$/ && print "$_ ";END {print "\n"}'
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 
golfed:

Code: Alles auswählen

seq 99|perl -l40nE'(1x$_)!~/^1?$|^(11+)\1+$/&&print}{say' # 57
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 
Eine Perl-Pearl!
Zuletzt geändert von linuxCowboy am 18.07.2013 03:10:01, insgesamt 1-mal geändert.
-der_linux_cowboy --- Besser werden! ... f*** w$$

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: Primzahlen mit Perl

Beitrag von GoKi » 14.07.2013 21:29:59

Mal J probieren? http://www.jsoftware.com/source.htm

Code: Alles auswählen

$ echo "i.&.(p:^:_1) 99" | ./jconsole
   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
MfG GoKi
:wq

wanne
Moderator
Beiträge: 7552
Registriert: 24.05.2010 12:39:42

Re: Primzahlen mit Perl

Beitrag von wanne » 14.07.2013 22:43:22

Drittprogramme sind unfair: (dash/openssl)

Code: Alles auswählen

seq 99 | sed 's/^/openssl prime /g' | sh | grep -v n
gegen (garantiert noch optimierbare)

Code: Alles auswählen

n=2; while [ $n -le 500 ]; do z=2; f="p"; while [ $z -le $(($n-1)) ]; do [ $(($n%$z)) -eq 0 ] && f="n"; z=$(($z+1)); done; [ "$f" = "p" ] && echo $n; n=$(($n+1)); done
(Im übrigen Beeindruckend wie viel schneller das läuft als wenn man das so schreibt. (Orginalversion war mit if then fi))
Nochbäser währe Java oder maxima enfach nextprime sagt:

Code: Alles auswählen

echo "i:1;while i<99 do print(i:next_prime(i));" | maxima
rot: Moderator wanne spricht, default: User wanne spricht.

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: Primzahlen mit Perl

Beitrag von linuxCowboy » 14.07.2013 22:50:05

Zugegeben, das hat was:

Code: Alles auswählen

echo "i.&.(p:^:_1)99"|jconsole # 30
Die Installationsroutine allein war den Blick schon wert!
(andere würden einfach einen tarball anbieten. ;)

:THX:
-der_linux_cowboy --- Besser werden! ... f*** w$$

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: Primzahlen mit Perl

Beitrag von GoKi » 14.07.2013 23:45:51

Dann halt noch mal mit Boardmitteln:

Code: Alles auswählen

seq 99|awk '$1>1{for(d=1;$1%++d;);if(d==$1)print}'
MfG GoKi
:wq

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: Primzahlen mit Perl

Beitrag von linuxCowboy » 15.07.2013 00:21:22

maxima - Wow, wo hast du die denn ausgegraben... die lib hat 36MB!

Code: Alles auswählen

echo "i:1;while i<97 do print(i:next_prime(i))$"|maxima -q|sed /%/d|tr -d '\n';echo # 83
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 
openssl ist kreativ:

Code: Alles auswählen

for i in `seq 99`;do openssl prime $i|grep -q n||echo -n "$i ";done;echo # 72
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
eine schöne Fingerübung in bash:

Code: Alles auswählen

n=2;while((n<99));do z=2;f=1;while((z<n));do((n%z))||f=0;((++z));done;((f))&&echo -n "$n ";((++n));done;echo # 108
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
Keep coding!
-der_linux_cowboy --- Besser werden! ... f*** w$$

wanne
Moderator
Beiträge: 7552
Registriert: 24.05.2010 12:39:42

Re: Primzahlen mit Perl

Beitrag von wanne » 15.07.2013 00:56:19

linuxCowboy hat geschrieben:maxima - Wow, wo hast du die denn ausgegraben... die lib hat 36MB!
Meiner meinung nach das bei weitem beste OpenSource CAS Außerdem muss man die schon deshalb loben weil sie das in lisp geschrieben haben.
rot: Moderator wanne spricht, default: User wanne spricht.

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: Primzahlen mit Perl

Beitrag von linuxCowboy » 15.07.2013 01:40:02

an Originalität dem Perler durchaus vergleichbar:

Code: Alles auswählen

seq 2 99|awk '{for(d=1;$1%++d;);if(d==$1)printf "%d ",$1}';echo # 63
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 
nur in der B-Note schwächelt er... ;-)
wanne hat geschrieben:...das bei weitem beste OpenSource CAS
Ja ist schon erstaunlich, was sich so in den Weiten des debian-Archivs verbirgt!

PS: ...schon wird's eine B+:

Code: Alles auswählen

seq 2 99|awk '{for(d=1;$1%++d;);if(d==$1)printf d" "}';echo # 59
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
-der_linux_cowboy --- Besser werden! ... f*** w$$

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Primzahlen mit Perl

Beitrag von rendegast » 15.07.2013 08:42:43

Nebenbei
http://packages.debian.org/wheezy/maxima
unten die Paketgrößen unterscheiden sich doch stark 120MB (amd64/i386)<-> ~40MB (andere),
die filelist sind identisch.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten