Primality by trial division: Difference between revisions

Content added Content deleted
(Added Snobol4)
Line 722: Line 722:
(and (> number 1)
(and (> number 1)
(*prime? 2)))</lang>
(*prime? 2)))</lang>

=={{header|SNOBOL4}}==

<lang SNOBOL4>define('isprime(n)i,max') :(isprime_end)
isprime isprime = n; max = chop(sqrt(n)); i = 1
le(n,1) :s(freturn)
le(n,3) :s(return)
eq(remdr(n,2),0) :s(freturn)
isp1 i = le(i + 2,max) i + 2 :f(return)
eq(remdr(n,i),0) :s(freturn)f(isp1)
isprime_end</lang>
===By Patterns===

Using the Abigail regex transated to Snobol patterns.

<lang SNOBOL4> define('rprime(n)str,pat1,pat2,m1') :(end_rprime)
rprime str = dupl('1',n); rprime = n
pat1 = ('1' | '')
pat2 = ('11' arbno('1')) $ m1 (*m1 arbno(*m1))
str pos(0) (pat1 | pat2) rpos(0) :s(freturn)f(return)
end_rprime

* # Test and display primes 0 .. 50
loop rprimes = rprimes rprime(n) ' '
n = lt(n,50) n + 1 :s(loop)
output = rprimes
end</lang>

Output:
<pre>2 3 5 7 11 13 17 19 23 29 31 37 41 43 47</pre>


=={{header|Standard ML}}==
=={{header|Standard ML}}==