Primality by trial division: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) m (→{{header|Modula-2}}: beginning) |
(→{{header|PL/0}}: Added a solution.) |
||
Line 3,797: | Line 3,797: | ||
(T (> D S) T) |
(T (> D S) T) |
||
(T (=0 (% N D)) NIL) ) ) ) ) )</syntaxhighlight> |
(T (=0 (% N D)) NIL) ) ) ) ) )</syntaxhighlight> |
||
=={{header|PL/0}}== |
|||
The program waits for a number. Then it displays 1 if the number is prime, 0 otherwise. |
|||
<syntaxhighlight lang="pascal"> |
|||
var p, isprime; |
|||
procedure checkprimality; |
|||
var i, isichecked; |
|||
begin |
|||
isprime := 0; |
|||
if p = 2 then isprime := 1; |
|||
if p >= 3 then |
|||
begin |
|||
i := 2; isichecked := 0; |
|||
while isichecked = 0 do |
|||
begin |
|||
if (p / i) * i = p then isichecked := 1; |
|||
if isichecked <> 1 then |
|||
if i * i >= p then |
|||
begin |
|||
isprime := 1; isichecked := 1 |
|||
end; |
|||
i := i + 1 |
|||
end |
|||
end |
|||
end; |
|||
begin |
|||
? p; |
|||
call checkprimality; |
|||
! isprime |
|||
end. |
|||
</syntaxhighlight> |
|||
4 runs: |
|||
{{in}} |
|||
<pre>1</pre> |
|||
{{out}} |
|||
<pre> 0</pre> |
|||
{{in}} |
|||
<pre>25</pre> |
|||
{{out}} |
|||
<pre> 0</pre> |
|||
{{in}} |
|||
<pre>43</pre> |
|||
{{out}} |
|||
<pre> 1</pre> |
|||
{{in}} |
|||
<pre>101</pre> |
|||
{{out}} |
|||
<pre> 1</pre> |
|||
=={{header|PL/I}}== |
=={{header|PL/I}}== |