Perfect numbers: Difference between revisions
Content added Content deleted
(Perfect numbers en Yabasic) |
No edit summary |
||
Line 3,498: | Line 3,498: | ||
perfects = { n <- 1... ; n = sum(factors n) } |
perfects = { n <- 1... ; n = sum(factors n) } |
||
</lang> |
</lang> |
||
=={{header|S-BASIC}}== |
|||
<lang basic> |
|||
$lines |
|||
comment |
|||
An S-BASIC program to find so-called "perfect" numbers, |
|||
i.e., numbers whose proper factors add up to the number |
|||
itself. The first 4 such numbers are 6, 28, 496, and |
|||
8128. |
|||
end |
|||
rem - return p mod q |
|||
function mod(p, q = integer) = integer |
|||
end = p - q * (p/q) |
|||
rem - return true if n is perfect, otherwise false |
|||
function isperfect(n = integer) = integer |
|||
var sum, f1, f2 = integer |
|||
sum = 1 |
|||
f1 = 2 |
|||
while (f1 * f1) <= n do |
|||
begin |
|||
if mod(n, f1) = 0 then |
|||
begin |
|||
sum = sum + f1 |
|||
f2 = n / f1 |
|||
if f2 > f1 then sum = sum + f2 |
|||
end |
|||
f1 = f1 + 1 |
|||
end |
|||
end = (sum = n) |
|||
rem - exercise the function |
|||
var k = integer |
|||
print "Searching up to 10,000 for perfect numbers ..." |
|||
for k = 2 to 10000 |
|||
if isperfect(k) then print k |
|||
next k |
|||
print "That's all. Goodbye." |
|||
end |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
Searching up to 10,000 for perfect numbers ... |
|||
6 |
|||
28 |
|||
496 |
|||
8128 |
|||
That's all. Goodbye. |
|||
</pre> |
|||
=={{header|Scala}}== |
=={{header|Scala}}== |