Attractive numbers: Difference between revisions

Added solution for Action!
(Add Modula-2)
(Added solution for Action!)
Line 171:
 
<pre>4 6 8 9 10 12 14 15 18 20 21 22 25 26 27 28 30 32 33 34 35 38 39 42 44 45 46 48 49 50 51 52 55 57 58 62 63 65 66 68 69 70 72 74 75 76 77 78 80 82 85 86 87 91 92 93 94 95 98 99 102 105 106 108 110 111 112 114 115 116 117 118 119 120</pre>
 
=={{header|Action!}}==
<lang Action!>DEFINE MAX="120"
BYTE ARRAY primes(MAX+1)
 
PROC Sieve()
BYTE i,j
 
FOR i=0 TO MAX
DO
primes(i)=1
OD
 
primes(0)=0 primes(1)=0
i=2
WHILE i<=MAX
DO
IF primes(i)=1 THEN
FOR j=2*i TO MAX STEP i
DO
primes(j)=0
OD
FI
i==+1
OD
RETURN
 
BYTE FUNC IsAttractive(BYTE n)
BYTE count,f
 
IF n<=1 THEN
RETURN (0)
ELSEIF primes(n) THEN
RETURN (0)
FI
 
count=0 f=2
DO
IF n MOD f=0 THEN
count==+1
n==/f
IF n=1 THEN
EXIT
ELSEIF primes(n) THEN
f=n
FI
ELSEIF f>=3 THEN
f==+2
ELSE
f=3
FI
OD
 
IF primes(count) THEN
RETURN (1)
FI
RETURN (0)
 
PROC Main()
BYTE i
 
Sieve()
PrintF("Attractive numbers in range 1..%B:%E",MAX)
FOR i=1 TO MAX
DO
IF IsAttractive(i) THEN
PrintF("%B ",i)
FI
OD
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Attractive_numbers.png Screenshot from Atari 8-bit computer]
<pre>
Attractive numbers in range 1..120:
4 6 8 9 10 12 14 15 18 20 21 22 25 26
27 28 30 32 33 34 35 38 39 42 44 45 46
48 49 50 51 52 55 57 58 62 63 65 66 68
69 70 72 74 75 76 77 78 80 82 85 86 87
91 92 93 94 95 98 99 102 105 106 108
110 111 112 114 115 116 117 118 119 120
</pre>
 
=={{header|Ada}}==
Anonymous user