Data update
This commit is contained in:
parent
796d366b97
commit
35bcdeebf8
504 changed files with 7045 additions and 610 deletions
21
Task/Arithmetic-derivative/ALGOL-W/arithmetic-derivative.alg
Normal file
21
Task/Arithmetic-derivative/ALGOL-W/arithmetic-derivative.alg
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
begin
|
||||
integer procedure lagarias ( integer value n ) ; % Lagarias arithmetic derivative %
|
||||
if n < 0
|
||||
then -lagarias (-n)
|
||||
else if n = 0 or n = 1
|
||||
then 0
|
||||
else begin
|
||||
integer f, q;
|
||||
integer procedure smallPf ( integer value j, k ) ; % Smallest prime factor %
|
||||
if j rem k = 0 then k else smallPf (j, k + 1);
|
||||
f := smallPf (n, 2); q := n div f;
|
||||
if q = 1
|
||||
then 1
|
||||
else q * lagarias (f) + f * lagarias (q)
|
||||
end lagarias ;
|
||||
|
||||
for n := -99 until 100 do begin
|
||||
writeon( i_w := 6, s_w := 0, " ", lagarias (n) );
|
||||
if n rem 10 = 0 then write()
|
||||
end for_n
|
||||
end.
|
||||
25
Task/Arithmetic-derivative/Lua/arithmetic-derivative.lua
Normal file
25
Task/Arithmetic-derivative/Lua/arithmetic-derivative.lua
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
do local function lagarias (n) -- Lagarias arithmetic derivative
|
||||
if n < 0
|
||||
then return -lagarias (-n)
|
||||
elseif n == 0 or n == 1
|
||||
then return 0
|
||||
else local function smallPf (j, k) -- Smallest prime factor
|
||||
if j % k == 0 then return k else return smallPf (j, k + 1) end
|
||||
end
|
||||
local f = smallPf (n, 2) local q = math.floor (n / f)
|
||||
if q == 1
|
||||
then return 1
|
||||
else return q * lagarias (f) + f * lagarias (q)
|
||||
end
|
||||
end
|
||||
end
|
||||
for n = -99,100
|
||||
do io.write (string.format("%6d", lagarias (n)))
|
||||
if n % 10 == 0 then io.write ("\n") end
|
||||
end
|
||||
io.write ("\n")
|
||||
for n = 1,17 -- 18, 19 and 20 would overflow
|
||||
do local m = 10 ^ n
|
||||
io.write ("D(", string.format ("%d", m), ") / 7 = ", math.floor (lagarias (m) / 7), "\n")
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
lagarias = function (n) // Lagarias arithmetic derivative
|
||||
if n < 0 then
|
||||
return -lagarias (-n)
|
||||
else if n == 0 or n == 1 then
|
||||
return 0
|
||||
else
|
||||
smallPf = function (j, k) // Smallest prime factor
|
||||
if j % k == 0 then
|
||||
return k
|
||||
else
|
||||
return smallPf (j, k + 1)
|
||||
end if
|
||||
end function
|
||||
f = smallPf (n, 2)
|
||||
q = floor (n / f)
|
||||
if q == 1 then
|
||||
return 1
|
||||
else
|
||||
return q * lagarias (f) + f * lagarias (q)
|
||||
end if
|
||||
end if
|
||||
end function
|
||||
fmt6 = function (n) // return a 6 character string representation of n
|
||||
s = str( n )
|
||||
if s.len > 5 then
|
||||
return s
|
||||
else
|
||||
return ( " " * ( 6 - s.len ) ) + s
|
||||
end if
|
||||
end function
|
||||
ad = ""
|
||||
for n in range( -99, 100 )
|
||||
ad = ad + " " + fmt6( lagarias (n) )
|
||||
if n % 10 == 0 then
|
||||
print( ad )
|
||||
ad = ""
|
||||
end if
|
||||
end for
|
||||
print()
|
||||
for n in range( 1, 17 ) // 18, 19 and 20 would overflow ????? TODO: check
|
||||
m = 10 ^ n
|
||||
print( "D(" + str(m) + ") / 7 = " + str( floor (lagarias (m) / 7) ) )
|
||||
end for
|
||||
Loading…
Add table
Add a link
Reference in a new issue