{- Known factors of small Fermat numbers, transcribed from http://www.prothsearch.com/fermat.html This code is public domain. -} module Fermatfactors(initfactors,getprimefactor,K(K),N(N),Fermatrecord) where { type Ii = Integer; newtype K = K Ii deriving Show; newtype N = N Ii deriving Show; type Fermatrecord = (K,N); getprimefactor :: Fermatrecord -> Ii; getprimefactor (K k , N n ) = (k * 2^n) + 1; -- http://www.prothsearch.com/fermat.html -- as of 2020-12-01 -- all but the largest factor. -- the remaining largest factor may be prime or composite. initfactors :: [(Ii,[Fermatrecord])]; initfactors = [ ( 0, []) , ( 1, []) , ( 2, []) , ( 3, []) , ( 4, []) , ( 5, [(K 5, N 7)]) , ( 6, [(K 1071, N 8)]) , ( 7, [(K 116503103764643, N 9)]) , ( 8, [(K 604944512477, N 11)]) , ( 9, [(K 37, N 16) ,(K 3640431067210880961102244011816628378312190597, N 11)]) , (10, [(K 11131, N 12) ,(K 395937, N 14) ,(K 1137640572563481089664199400165229051, N 12)]) , (11, [(K 39, N 13) ,(K 119, N 13) ,(K 10253207784531279, N 14) ,(K 434673084282938711, N 13)]) , (12, [(K 7, N 14) ,(K 397, N 16) ,(K 973, N 16) ,(K 11613415, N 14) ,(K 76668221077, N 14) ,(K 17353230210429594579133099699123162989482444520899, N 15)]) , (13, [(K 41365885, N 16) ,(K 20323554055421, N 17) ,(K 6872386635861, N 19) ,(K 609485665932753836099, N 19)]) , (14, [(K 1784180997819127957596374417642156545110881094717, N 16)]) , (15, [(K 579, N 21) ,(K 17753925353, N 17) ,(K 1287603889690528658928101555, N 17)]) , (16, [(K 1575, N 19) ,(K 180227048850079840107, N 20)]) , (17, [(K 59251857, N 19) ,(K 14783975791554494074552473179612897725474511, N 19)]) , (18, [(K 13, N 20) ,(K 9688698137266697, N 23)]) , (19, [(K 33629, N 21) ,(K 308385, N 21) ,(K 8962167624028624126082526703, N 22)]) , (20, []) , (21, [(K 534689, N 23)]) , (22, [(K 3853959202444067657533632211, N 24)]) , (23, [(K 5, N 25)]) , (24, []) , (25, [(K 48413, N 29) ,(K 1522849979, N 27) ,(K 16168301139, N 27)]) , (26, [(K 143165, N 29)]) -- currently largest known Mersenne prime would be around here , (27, [(K 141015, N 30) ,(K 430816215, N 29)]) , (28, [(K 25709319373, N 36)]) , (29, [(K 1120049, N 31)]) , (30, [(K 149041, N 32) ,(K 127589, N 33)]) , (31, [(K 5463561471303, N 33)]) , (32, [(K 1479, N 34)]) , (33, []) , (34, []) , (35, []) , (36, [(K 5, N 39) ,(K 3759613, N 38)]) , (37, [(K 1275438465, N 39)]) -- GMP maximum 2^37 bits , (38, [(K 3, N 41) ,(K 2653, N 40)]) , (39, [(K 21, N 41) ,(K 2864929972774011, N 41)]) , (40, []) , (41, []) , (42, [(K 43485, N 45) ,(K 111318179143061, N 45)]) , (43, [(K 212675402445, N 45)]) , (44, []) , (45, []) , (46, []) , (47, []) , (48, [(K 2139543641769, N 50)]) , (49, []) , (50, []) , (51, []) , (52, [(K 4119, N 54) ,(K 21626655, N 54) ,(K 81909357657279, N 54)]) , (53, []) , (54, []) , (55, [(K 29, N 57)]) , (56, []) , (57, []) , (58, [(K 95, N 61)]) , (59, []) , (60, []) , (61, [(K 54985063, N 66)]) , (62, [(K 697, N 64)]) , (63, [(K 9, N 67)]) , (64, [(K 17853639, N 67)]) ]; } --end