Anti-primes: Difference between revisions
Content deleted Content added
Added Rust |
No edit summary |
||
Line 520: | Line 520: | ||
The first 20 anti-primes are: |
The first 20 anti-primes are: |
||
1 2 4 6 12 24 36 48 60 120 180 240 360 720 840 1260 1680 2520 5040 7560 |
1 2 4 6 12 24 36 48 60 120 180 240 360 720 840 1260 1680 2520 5040 7560 |
||
</pre> |
|||
=={{header|Haskell}}== |
|||
<lang haskell>import Data.List |
|||
import Data.Maybe |
|||
firstPrimeFactor n = head $ filter (\x -> n `mod` x == 0 ) [2..n] |
|||
allPrimeFactors 1 = [] |
|||
allPrimeFactors n = first:(allPrimeFactors(n `div` first)) |
|||
where first = firstPrimeFactor n |
|||
factorCount 1 = 1 |
|||
factorCount n = foldr1 (*) (map (+1) $ map length (group $ allPrimeFactors n)) |
|||
divisorCount n = (n, factorCount n) |
|||
hcnNext (num, factors) = fromJust (find (\x -> snd x > factors) (map divisorCount [num..])) |
|||
hcnSequence = map (fst) $ iterate hcnNext (1, 1) |
|||
main = putStrLn $ show $ take 20 hcnSequence</lang> |
|||
{{output}} |
|||
<pre> |
|||
[1,2,4,6,12,24,36,48,60,120,180,240,360,720,840,1260,1680,2520,5040,7560] |
|||
</pre> |
</pre> |
||