Primality by trial division: Difference between revisions
Content added Content deleted
m (→[[Primality by trial division#ALGOL 68]]: fix pre tag) |
(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}}== |