check (p:ps) n | p*p > n = True primeDivs n = divs n primes where divs 1 _ = [] divs n (p:ps) = if p*p > n then [(n, 1)] else let (c, r) = cnt n p 0 in if c == 0 then divs n ps else (p, c) : divs r ps combine divs = comb [1] divs where comb list [] = list comb list ((p, c) : ps) =
Standard input is empty
(220,284) (1184,1210) (2620,2924) (5020,5564) (6232,6368) (10744,10856) (12285,14595) (17296,18416) (63020,76084) (66928,66992) (67095,71145) (69615,87633) (79750,88730) (100485,124155) (122265,139815) (122368,123152) (141664,153176) (142310,168730) (171856,176336) (176272,180848) (185368,203432) (196724,202444) (280540,365084) (308620,389924) (319550,430402) (356408,399592) (437456,455344) (469028,486178) (503056,514736) (522405,525915)