Data update
This commit is contained in:
parent
35bcdeebf8
commit
74c69a0df6
2427 changed files with 31826 additions and 3468 deletions
38
Task/Smith-numbers/SETL/smith-numbers.setl
Normal file
38
Task/Smith-numbers/SETL/smith-numbers.setl
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
program smith_numbers;
|
||||
loop for s in [n : n in [2..9999] | smith(n)] do
|
||||
putchar(lpad(str s, 5));
|
||||
if (i +:= 1) mod 16=0 then print; end if;
|
||||
end loop;
|
||||
print;
|
||||
|
||||
proc smith(n);
|
||||
facs := factors(n);
|
||||
return #facs /= 1 and +/digits(n) = +/[+/digits(f) : f in facs];
|
||||
end proc;
|
||||
|
||||
proc digits(n);
|
||||
d := [];
|
||||
loop while n > 0 do
|
||||
d with:= n mod 10;
|
||||
n div:= 10;
|
||||
end loop;
|
||||
return d;
|
||||
end proc;
|
||||
|
||||
proc factors(n);
|
||||
f := [];
|
||||
loop while even n do
|
||||
n div:= 2;
|
||||
f with:= 2;
|
||||
end loop;
|
||||
d := 3;
|
||||
loop while d <= n do
|
||||
loop while n mod d = 0 do
|
||||
n div:= d;
|
||||
f with:= d;
|
||||
end loop;
|
||||
d +:= 2;
|
||||
end loop;
|
||||
return f;
|
||||
end proc;
|
||||
end program;
|
||||
Loading…
Add table
Add a link
Reference in a new issue