Kody źródłowe/Liczby pierwsze
Wygląd
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);
}
Ten tekst nie podlega pod prawa autorskie. Jest zatem własnością publiczną, ponieważ jego autor udostępnił go na licencji public domain.