Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,10 @@
divisors :: (Integral a) => a -> [a]
divisors n = filter ((0 ==) . (n `mod`)) [1 .. (n `div` 2)]
main :: IO ()
main = do
let range = [1 .. 20000 :: Int]
divs = zip range $ map (sum . divisors) range
pairs = [(n, m) | (n, nd) <- divs, (m, md) <- divs,
n < m, nd == m, md == n]
print pairs

View file

@ -0,0 +1,21 @@
import Data.Bool (bool)
amicablePairsUpTo :: Int -> [(Int, Int)]
amicablePairsUpTo n =
let sigma = sum . properDivisors
in [1 .. n] >>=
(\x ->
let y = sigma x
in bool [] [(x, y)] (x < y && x == sigma y))
properDivisors
:: Integral a
=> a -> [a]
properDivisors n =
let root = (floor . sqrt) (fromIntegral n :: Double)
lows = filter ((0 ==) . rem n) [1 .. root]
in init $
lows ++ drop (bool 0 1 (root * root == n)) (reverse (quot n <$> lows))
main :: IO ()
main = mapM_ print $ amicablePairsUpTo 20000