RosettaCodeData/Task/Almost-prime/Agena/almost-prime.agena
2026-04-30 12:34:36 -04:00

34 lines
841 B
Text

scope # show some k-almost-primes - translation of C via Algol W
local proc kPrime( nv :: number, k :: number ) :: boolean
local p, f, n := 3, 0, nv;
while f <= k and n mod 2 = 0 do
n \:= 2;
f +:= 1
od;
while f <= k and p * p <= n do
while n mod p = 0 do
n \:= p;
f +:= 1
od;
p +:= 2
od;
if n > 1 then f +:= 1 fi;
return f = k
end;
scope # task
for k to 5 do
printf( "k = %d: ", k );
local c, i := 0, 2;
while c < 10 do
if kPrime( i, k ) then
printf( " %3d", i );
c +:= 1
fi;
i +:= 1
od;
print()
od
epocs
epocs