Przejdź do zawartości

Kody źródłowe/Liczby pierwsze

Z Wikibooks, biblioteki wolnych podręczników.
Liczby pierwsze • Kod źródłowy
Liczby pierwsze
Kod źródłowy

JavaScript

[edytuj]

Kod wyświetlający listę w języku JavaScript:

<script type="text/javascript">

function podzielna(a) {
  with(Math)b=floor(sqrt(a));c=false;
  for(i=2;i<=b;i++)
    {if(a%i==0){c=true;break;}
  }
  return c;
}

j=1;
d=2;
while(j<=2000){
  b=podzielna(d);
  if(!b){
    if(j%500==1) {
      document.write("<table><tr><td valign='top' style='padding:10px'>");
    }
    if(j%100==1) {
      document.write("<table border style='border:solid 2px silver' ");
      document.write("cellspacing='0' cellpadding='3'>");
      document.write("<tr style='font-weight:bold;background:#eeeeee'>");
      document.write("<td>L.p.</td><td>Liczba</td></tr>");
    }
    document.write("<tr><td>"+j+"</td><td>"+d+"</td></tr>");
    if(j%100==0) {
      document.write("</table>");
    }
    if(j%500==100||j%500==200||j%500==300||j%500==400) {
      document.write("</td><td valign='top' style='padding:10px'>");
    }
    if(j%500==0) {
      document.write("</table></td></tr></table><br/><br/>");
    }
    j++;
  }
  d++;
}

</script>

Haskell

[edytuj]

Kod implementujący listę liczb pierwszych napisany w Haskellu.

primes :: [Integer]
primes = map head $ iterate (\(x:xs)->[y| y<-xs, y `mod` x /= 0]) [2..]

Python

[edytuj]

Wersja edukacyjna

[edytuj]

Generator zwracający listę liczb pierwszych mniejszych niż dany limit w Pythonie.

def primes(limit):
    tab=[]       # robocza lista liczb pierwszych, poniewaz jest to generator to sie zachowuje miedzy wywolaniami
    for i in range(2,limit):     #  rozwazamy liczby od 2 w górę ale mniejsze niż limit
        for j in tab:            # dla wszystkich do tej pory znalezionych liczb pierwszych
            if i % j == 0: break # sprawdzamy czy ktoras jest dzielnikiem, jesli jest to i nie jest liczba pierwsza
        else: # a jesli nie ma mniejszej od i liczby pierwszej z tab ktora jest jej dzielnikiem to i jest liczba pierwsza
            yield i              
            tab.append(i)        
 
for i in primes(100):
    print(i)

Wersja a la Haskell

[edytuj]
# wszystkie liczby od 2 do 99 dla ktorych wszystkie liczby z tego zakresu mniejsze od nich nie sa ich dzielnikami
primes = ( i for i in range(2,100) if all( i%j for j in range(2,i) ) )

C#

[edytuj]

C#: program zapisujący liczby pierwsze do pamięci, a następnie wypisujący je na konsoli.

            List<uint> pierwsze = new List<uint>();
            for (uint i = 100000000; i < uint.MaxValue; i++)
            {
                bool pierwsza = true;
                for (uint n = 2; n < i; n++)
                {
                    if (i % n == 0)
                    {
                        pierwsza = false;
                        break;
                    }
                }
                if (pierwsza)
                {
                    pierwsze.Add(i);
                }
            }
            foreach (uint p in pierwsze)
            {
                Console.WriteLine(p.ToString());
            }

ANSI C

[edytuj]

Program przeszukujący 1000000 liczb w poszukiwaniu liczb pierwszych w 4 systemach liczbowych. Coded by MS

#include <stdio.h>
#include <math.h>

#define BINLENGTH 32
#define NUMSYS 2
#define LAST 1000000

int primetest(int);
void binary(int);

int main(void) {
    int count = 0;
    
    for(int i = 2; i <= LAST; i++) {
        if(primetest(i) == 1) {
            count++;
            printf("\n%d. %5d(10) \t\t", count, i); 
            binary(i);
            printf("\t%20o(8) %20X(16)", i, i);
        }
    }
    
    printf("\n\n");
    
    return 0;
}

int primetest(int n) {
    for(int i = 2; i <= (int)sqrt(n); i++) {
        if(n % i == 0) {
            return 0;
        }
    }
    
    return 1;
}

void binary(int n) {
    int bin[BINLENGTH];
    
    for(int i = BINLENGTH - 1; i >= 0; i--) {
        bin[i] = n % NUMSYS;
        n /= NUMSYS;
    }
    
    for(int j = 0; j < BINLENGTH; j++) {
        printf("%d", bin[j]);
    }
    printf("(%d)", NUMSYS);
}


Public Domain
Ten tekst nie podlega pod prawa autorskie. Jest zatem własnością publiczną, ponieważ jego autor udostępnił go na licencji public domain.