Sequence: smallest number greater than previous term with exactly n divisors: Difference between revisions
Content added Content deleted
Line 300: | Line 300: | ||
=={{header|Haskell}}== |
=={{header|Haskell}}== |
||
<lang haskell>import Text.Printf (printf) |
<lang haskell>import Text.Printf (printf) |
||
import Control.Monad (guard) |
|||
sequence_A069654 :: [(Int,Int)] |
sequence_A069654 :: [(Int,Int)] |
||
sequence_A069654 = go 1 $ (,) <*> |
sequence_A069654 = go 1 $ (,) <*> countDivs <$> [1..] |
||
where |
|||
countDivs n = foldr f 0 [1..floor (sqrt $ realToFrac n)] |
|||
where |
|||
guard (n `mod` x == 0) |
|||
let y = n `div` |
f d r | n `mod` d == 0 = let y = n `div` d in if d == y then succ r else r+2 |
||
| otherwise = r |
|||
go t ((n,d):xs) | d == t = (t,n):go (succ t) xs |
|||
| otherwise = go t xs |
|||
main :: IO () |
main :: IO () |