Primzahlen(bc)

Aus IT074-Wiki

Wechseln zu: Navigation, Suche

Hier zur Abwechslung mal wieder eins dieser großartigen Primzahlprogramme. Diesmal in der Sprache von bc einem herrlichen Tool aus der Lunix-Welt. Geshi kann bc's Syntax derzeit leider nicht hervorheben (bzw. highlighten), darum habe ich ihm das Ding als C verkauft, ist sowieso ziemlich ähnlich.

#!/usr/bin/bc
define prim (limit) {
        pk[2] = 1 /* 2 ist prim */
        for (i=3;i<=limit;i+=2) {
                /* zunaechst sind alle ungeraden Zahlen
                Primzahlkandidaten */
                pk[i]=1
        }
        /* alle Zahlen 3<=z<=sqrt(limit) werden durchgegangen */
        for (i=3;i^2<=limit;i++) {
                /* alle Vielfachen dieser Zahlen werden gestrichen */
                for (j=i+1;j<=limit;j++) {
                        /* falls sie noch in Frage kommen */
                        if (pk[j]==1 && j%i==0) pk[j]=0
                }
        }
        /* Ausgabe */
        for (i=2;i<=limit;i++) {
                if (pk[i]==1) print i," "
        }
        return 0
}
/* n bisschen Interaktivitaet */
while (1) {   
        print "Berechne Primzahlen bis (Abbr. mit limit<2): "; plimit = read()
        if (plimit < 2) break
        print "Die Primzahlen bis ",plimit," sind "
        res=prim(plimit)
        print "\n"
}
quit

Siehe auch