Explorar o código

Add infinite list for prime construction

DricomDragon %!s(int64=5) %!d(string=hai) anos
pai
achega
d284b544e8
Modificáronse 1 ficheiros con 6 adicións e 0 borrados
  1. 6 0
      tp/rsa/main.hs

+ 6 - 0
tp/rsa/main.hs

@@ -53,3 +53,9 @@ makeBlocks bsize msg = map groupBytes (groupN bsize msg)
 
 splitBlocks::Message -> Message
 splitBlocks msg = concat (map ungroupBytes msg)
+
+-- Reuse arithmetics from slide 42
+primecandidates = [6 * k + a | k <- [1..], a <- [-1, 1]]
+dividers n = [k | k <- takeWhile (\k -> k * k <= n) primeinf, rem n k == 0]
+primeinf = 2:3:[n | n <- primecandidates, null (dividers n)]
+