42 lines
849 B
Plaintext
42 lines
849 B
Plaintext
// Returns boolean indicating whether n is k-almost prime
|
|
sub almostPrime(n, k)
|
|
local divisor, count
|
|
|
|
divisor = 2
|
|
|
|
while(count < (k + 1) and n <> 1)
|
|
if not mod(n, divisor) then
|
|
n = n / divisor
|
|
count = count + 1
|
|
else
|
|
divisor = divisor + 1
|
|
end if
|
|
wend
|
|
return count = k
|
|
end sub
|
|
|
|
// Generates table containing first ten k-almost primes for given k
|
|
sub kList(k, kTab())
|
|
local n, i
|
|
|
|
n = 2^k : i = 1
|
|
while(i < 11)
|
|
if almostPrime(n, k) then
|
|
kTab(i) = n
|
|
i = i + 1
|
|
end if
|
|
n = n + 1
|
|
wend
|
|
end sub
|
|
|
|
// Main procedure, displays results from five calls to kList()
|
|
dim kTab(10)
|
|
for k = 1 to 5
|
|
print "k = ", k, " : ";
|
|
kList(k, kTab())
|
|
for n = 1 to 10
|
|
print kTab(n), ", ";
|
|
next
|
|
print "..."
|
|
next
|