Písemka

Ve zvoleném programovacím jazyce napište funkci, která navrací, zda je její parametr prvočíslo.

Python

from math import sqrt
def je_prvocislo(N):
	if N < 2:
		return False
	for i in range(2, int(sqrt(N))+1):
		if N % i == 0:
			return False
	return True

nebo

from Crypto.Util.number import isPrime

C

char je_prvocislo(int N){
	int i;
	if (N < 2)
		return 0;
	for (i=2; i*i <= N; i++){
		if (N % i == 0)
			return 0;
	}
	return 1;
}

Haskell

prvocislo n = notElem 0 [mod n x | x <- [2..n-1]]

Ruby

Podobně funkcionálně se to dá zapsat i v Ruby, jen to nebude tak rychlé (Haskell je na funkcionální programování lépe stavěný)

def prvocislo(n)
	not (2..n-1).map{|x| n%x}.include? 0
end

Prolog

prvocislo(N) :- S is ceiling(sqrt(N-1)), nema_delitele(N, S).
% nema_delitele(+Dělenec, -Dělitel) : Dělenec není dělen beze zbytku žádným číslem v rozsahu 2 až Dělitel
nema_delitele(_, 1).
nema_delitele(N, X) :- N mod X > 0, Y is X - 1, nema_delitele(N, Y).

Scheme

(define (prvocislo? n)
 ((lambda (nema_delitele)
   (nema_delitele nema_delitele (- n 1)))
  (lambda (self x)
   (if (< x 2) #t
    (and
     (> (modulo n x) 0)
     (self self (- x 1))
   )))
))