RosettaCodeData/Task/Square-free-integers/S-BASIC/square-free-integers.basic
2025-02-27 18:35:13 -05:00

54 lines
1.2 KiB
Text

$lines
$constant true = 0FFFFH
$constant false = 0
rem - return true if n is square-free
function SquareFree(n = integer) = integer
var i, count, result = integer
i = 2
result = true
rem - decompose n into its prime factors
while (i*i) <= n and result <> false do
begin
count = 0
while n - (n / i) * i = 0 do
begin
count = count + 1
n = n / i
end
rem - not square-free if a divisor was repeated
if count > 1 then result = false
i = i + 1
end
end = result
rem - demonstrate the function
var i, found = integer
print "Showing square-free numbers between 1 and 145"
for i = 1 to 145
if SquareFree(i) then print using "### ";i;
next i
print
found = 0
for i = 1 to 100
if SquareFree(i) then found = found + 1
next i
print "Square-free numbers between 1 and 100 ="; found
found = 0
for i = 1 to 1000
if SquareFree(i) then found = found + 1
next i
print "Square-free numbers between 1 and 1,000 ="; found
found = 0
for i = 1 to 10000
if SquareFree(i) then found = found + 1
next i
print "Square-free numbers between 1 and 10,000 ="; found
end