loopMapInit :: IM.IntMap Int
loopMapInit = cutClear $ IM.fromList pairs
  where
    pairs = V.foldl' go [] sumOfProperDivisorsVec
      where
        go :: [(Int,Int)] -> Word32 -> [(Int,Int)]
        go xs val
          | val < 2 || val > fromIntegral maxN = xs
          | otherwise =
            let v = fromIntegral val
            in (v, fromIntegral $ V.unsafeIndex sumOfProperDivisorsVec v) : xs
loopMapInit :: IM.IntMap Int
loopMapInit = cutClear $ IM.fromList pairs
  where
    pairs = V.foldl' go [] sumOfProperDivisorsVec
      where
        go :: [(Int,Int)] -> Word32 -> [(Int,Int)]
        go xs val
          | val < 2 || val > fromIntegral maxN = xs
          | otherwise =
            let v = fromIntegral val
            in (v, fromIntegral $ V.unsafeIndex sumOfProperDivisorsVec v) : xs
loopMapInit = cutClear $ IM.fromList pairs
  where
    pairs = V.foldl' go [] sumOfProperDivisorsVec
      where
        go :: [(Int,Int)] -> Word32 -> [(Int,Int)]
        go xs val
          | val < 2 || val > fromIntegral maxN = xs
          | otherwise =
            let v = fromIntegral val
            in (v, fromIntegral $ V.unsafeIndex sumOfProperDivisorsVec v) : xs