Ve zvoleném programovacím jazyce napište funkci, která navrací, zda je její parametr prvočíslo.
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
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;
}
prvocislo n = notElem 0 [mod n x | x <- [2..n-1]]
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
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).
(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))
)))
))