June 2018 Update

This commit is contained in:
Ingy döt Net 2018-06-22 20:57:24 +00:00
parent ba8067c3b7
commit 22f33d4004
5278 changed files with 84726 additions and 14379 deletions

View file

@ -1,3 +1,4 @@
function isperfect(n)
n == sum([n % i == 0 ? i : 0 for i = 1:n-1])
end
isperfect(n::Integer) = n == sum([n % i == 0 ? i : 0 for i = 1:(n - 1)])
perfects(n::Integer) = filter(isperfect, 1:n)
@show perfects(10000)

View file

@ -0,0 +1,43 @@
MODULE PerfectNumbers;
FROM SWholeIO IMPORT
WriteCard;
FROM STextIO IMPORT
WriteLn;
FROM RealMath IMPORT
sqrt;
VAR
N: CARDINAL;
PROCEDURE IsPerfect(N: CARDINAL): BOOLEAN;
VAR
S, I: CARDINAL;
SqrtN: REAL;
BEGIN
S := 1;
SqrtN := sqrt(FLOAT(N));
IF N REM 2 = 0 THEN
S := S + 2 + N / 2;
END;
I := 3;
WHILE FLOAT(I) <= SqrtN - 1.0 DO
IF N REM I = 0 THEN
S := S + I + N / I;
END;
I := I + 1;
END;
IF I * I = N THEN
S := S + I;
END;
RETURN (N = S);
END IsPerfect;
BEGIN
FOR N := 2 TO 10000 BY 2 DO
IF IsPerfect(N) THEN
WriteCard(N, 5);
WriteLn;
END;
END;
END PerfectNumbers.

View file

@ -1 +1,4 @@
sub perf($n) { $n == [+] grep $n %% *, 1 .. $n div 2 }
sub is-perf($n) { $n == [+] grep $n %% *, 1 .. $n div 2 }
# used as
put (grep {.&is-perf}, 1..Inf)[^4];