Skip to content

Instantly share code, notes, and snippets.

@myuon
Last active April 26, 2023 02:39
Show Gist options
  • Save myuon/8664326 to your computer and use it in GitHub Desktop.
Save myuon/8664326 to your computer and use it in GitHub Desktop.
2つの異なる平方数の和として3通り以上の仕方で表されるような奇数はどのようなものが存在するか?
sqRootPair :: Int -> [(Int, Int)]
sqRootPair n = filter (\(x,y) -> x^2 + y^2 == n)
[(x,y) | x <- [1..n], y <- [1..n], x < y, x^2 < n, y^2 < n]
show' :: [(Int, Int)] -> String
show' ns = ((\(x,y) -> show $ x^2 + y^2) $ ns !! 0) ++ " :" ++ show ns
main = do
mapM_ (putStrLn . show') $ filter (\x -> length x /= 0) [sqRootPair n | n <- [1,3..]]
*3通り以上存在するものを列挙した場合
325 :[(1,18),(6,17),(10,15)]
425 :[(5,20),(8,19),(13,16)]
725 :[(7,26),(10,25),(14,23)]
845 :[(2,29),(13,26),(19,22)]
925 :[(5,30),(14,27),(21,22)]
1025 :[(1,32),(8,31),(20,25)]
1105 :[(4,33),(9,32),(12,31),(23,24)]
1325 :[(10,35),(13,34),(22,29)]
1445 :[(1,38),(17,34),(22,31)]
1525 :[(2,39),(9,38),(25,30)]
1625 :[(5,40),(16,37),(20,35),(28,29)]
1825 :[(12,41),(15,40),(23,36)]
1885 :[(6,43),(11,42),(21,38),(27,34)]
2125 :[(3,46),(10,45),(19,42),(30,35)]
2225 :[(4,47),(17,44),(25,40)]
2405 :[(2,49),(14,47),(17,46),(31,38)]
2425 :[(11,48),(20,45),(24,43)]
2465 :[(8,49),(16,47),(23,44),(28,41)]
2525 :[(5,50),(26,43),(34,37)]
2665 :[(8,51),(19,48),(27,44),(36,37)]
2725 :[(15,50),(18,49),(31,42)]
2825 :[(4,53),(11,52),(35,40)]
2873 :[(8,53),(13,52),(32,43)]
2925 :[(3,54),(18,51),(30,45)]
3125 :[(10,55),(25,50),(38,41)]
3145 :[(3,56),(21,52),(29,48),(36,43)]
3425 :[(17,56),(20,55),(32,49)]
3445 :[(9,58),(14,57),(23,54),(41,42)]
3485 :[(2,59),(11,58),(26,53),(37,46)]
3625 :[(5,60),(12,59),(32,51),(40,45)]
3725 :[(2,61),(19,58),(35,50)]
3757 :[(6,61),(29,54),(34,51)]
3825 :[(15,60),(24,57),(39,48)]
3925 :[(9,62),(26,57),(30,55)]
3965 :[(11,62),(22,59),(34,53),(43,46)]
*1通り以上存在するものを列挙した場合
5 :[(1,2)]
13 :[(2,3)]
17 :[(1,4)]
25 :[(3,4)]
29 :[(2,5)]
37 :[(1,6)]
41 :[(4,5)]
45 :[(3,6)]
53 :[(2,7)]
61 :[(5,6)]
65 :[(1,8),(4,7)]
73 :[(3,8)]
85 :[(2,9),(6,7)]
89 :[(5,8)]
97 :[(4,9)]
101 :[(1,10)]
109 :[(3,10)]
113 :[(7,8)]
117 :[(6,9)]
125 :[(2,11),(5,10)]
137 :[(4,11)]
145 :[(1,12),(8,9)]
149 :[(7,10)]
153 :[(3,12)]
157 :[(6,11)]
169 :[(5,12)]
173 :[(2,13)]
181 :[(9,10)]
185 :[(4,13),(8,11)]
193 :[(7,12)]
197 :[(1,14)]
205 :[(3,14),(6,13)]
221 :[(5,14),(10,11)]
225 :[(9,12)]
229 :[(2,15)]
233 :[(8,13)]
241 :[(4,15)]
245 :[(7,14)]
257 :[(1,16)]
261 :[(6,15)]
265 :[(3,16),(11,12)]
269 :[(10,13)]
277 :[(9,14)]
281 :[(5,16)]
289 :[(8,15)]
293 :[(2,17)]
305 :[(4,17),(7,16)]
313 :[(12,13)]
317 :[(11,14)]
325 :[(1,18),(6,17),(10,15)]
333 :[(3,18)]
337 :[(9,16)]
349 :[(5,18)]
353 :[(8,17)]
365 :[(2,19),(13,14)]
369 :[(12,15)]
373 :[(7,18)]
377 :[(4,19),(11,16)]
389 :[(10,17)]
397 :[(6,19)]
401 :[(1,20)]
405 :[(9,18)]
409 :[(3,20)]
421 :[(14,15)]
425 :[(5,20),(8,19),(13,16)]
433 :[(12,17)]
445 :[(2,21),(11,18)]
449 :[(7,20)]
457 :[(4,21)]
461 :[(10,19)]
477 :[(6,21)]
481 :[(9,20),(15,16)]
485 :[(1,22),(14,17)]
493 :[(3,22),(13,18)]
505 :[(8,21),(12,19)]
509 :[(5,22)]
521 :[(11,20)]
533 :[(2,23),(7,22)]
541 :[(10,21)]
545 :[(4,23),(16,17)]
549 :[(15,18)]
557 :[(14,19)]
565 :[(6,23),(9,22)]
569 :[(13,20)]
577 :[(1,24)]
585 :[(3,24),(12,21)]
593 :[(8,23)]
601 :[(5,24)]
605 :[(11,22)]
613 :[(17,18)]
617 :[(16,19)]
625 :[(7,24),(15,20)]
629 :[(2,25),(10,23)]
637 :[(14,21)]
641 :[(4,25)]
653 :[(13,22)]
657 :[(9,24)]
661 :[(6,25)]
673 :[(12,23)]
677 :[(1,26)]
685 :[(3,26),(18,19)]
689 :[(8,25),(17,20)]
697 :[(11,24),(16,21)]
701 :[(5,26)]
709 :[(15,22)]
725 :[(7,26),(10,25),(14,23)]
733 :[(2,27)]
745 :[(4,27),(13,24)]
757 :[(9,26)]
761 :[(19,20)]
765 :[(6,27),(18,21)]
769 :[(12,25)]
773 :[(17,22)]
785 :[(1,28),(16,23)]
793 :[(3,28),(8,27)]
797 :[(11,26)]
801 :[(15,24)]
809 :[(5,28)]
821 :[(14,25)]
829 :[(10,27)]
833 :[(7,28)]
841 :[(20,21)]
845 :[(2,29),(13,26),(19,22)]
853 :[(18,23)]
857 :[(4,29)]
865 :[(9,28),(17,24)]
873 :[(12,27)]
877 :[(6,29)]
881 :[(16,25)]
901 :[(1,30),(15,26)]
905 :[(8,29),(11,28)]
909 :[(3,30)]
925 :[(5,30),(14,27),(21,22)]
929 :[(20,23)]
937 :[(19,24)]
941 :[(10,29)]
949 :[(7,30),(18,25)]
953 :[(13,28)]
965 :[(2,31),(17,26)]
977 :[(4,31)]
981 :[(9,30)]
985 :[(12,29),(16,27)]
997 :[(6,31)]
1009 :[(15,28)]
1013 :[(22,23)]
1017 :[(21,24)]
1021 :[(11,30)]
1025 :[(1,32),(8,31),(20,25)]
1033 :[(3,32)]
1037 :[(14,29),(19,26)]
1049 :[(5,32)]
1053 :[(18,27)]
1061 :[(10,31)]
1069 :[(13,30)]
1073 :[(7,32),(17,28)]
1093 :[(2,33)]
1097 :[(16,29)]
1105 :[(4,33),(9,32),(12,31),(23,24)]
1109 :[(22,25)]
1117 :[(21,26)]
1125 :[(6,33),(15,30)]
1129 :[(20,27)]
1145 :[(11,32),(19,28)]
1153 :[(8,33)]
1157 :[(1,34),(14,31)]
1165 :[(3,34),(18,29)]
1181 :[(5,34)]
1189 :[(10,33),(17,30)]
1193 :[(13,32)]
1201 :[(24,25)]
1205 :[(7,34),(23,26)]
1213 :[(22,27)]
1217 :[(16,31)]
1225 :[(21,28)]
1229 :[(2,35)]
1233 :[(12,33)]
1237 :[(9,34)]
1241 :[(4,35),(20,29)]
1249 :[(15,32)]
1261 :[(6,35),(19,30)]
1277 :[(11,34)]
1285 :[(14,33),(18,31)]
1289 :[(8,35)]
1297 :[(1,36)]
1301 :[(25,26)]
1305 :[(3,36),(24,27)]
1313 :[(17,32),(23,28)]
1321 :[(5,36)]
1325 :[(10,35),(13,34),(22,29)]
1341 :[(21,30)]
1345 :[(7,36),(16,33)]
1361 :[(20,31)]
1369 :[(12,35)]
1373 :[(2,37)]
1377 :[(9,36)]
1381 :[(15,34)]
1385 :[(4,37),(19,32)]
1405 :[(6,37),(26,27)]
1409 :[(25,28)]
1413 :[(18,33)]
1417 :[(11,36),(24,29)]
1421 :[(14,35)]
1429 :[(23,30)]
1433 :[(8,37)]
1445 :[(1,38),(17,34),(22,31)]
1453 :[(3,38)]
1465 :[(13,36),(21,32)]
1469 :[(5,38),(10,37)]
1481 :[(16,35)]
1489 :[(20,33)]
1493 :[(7,38)]
1513 :[(12,37),(27,28)]
1517 :[(19,34),(26,29)]
1521 :[(15,36)]
1525 :[(2,39),(9,38),(25,30)]
1537 :[(4,39),(24,31)]
1549 :[(18,35)]
1553 :[(23,32)]
1557 :[(6,39)]
1565 :[(11,38),(14,37)]
1573 :[(22,33)]
1585 :[(8,39),(17,36)]
1597 :[(21,34)]
1601 :[(1,40)]
1609 :[(3,40)]
1613 :[(13,38)]
1621 :[(10,39)]
1625 :[(5,40),(16,37),(20,35),(28,29)]
1629 :[(27,30)]
1637 :[(26,31)]
1649 :[(7,40),(25,32)]
1657 :[(19,36)]
1665 :[(12,39),(24,33)]
1669 :[(15,38)]
1681 :[(9,40)]
1685 :[(2,41),(23,34)]
1693 :[(18,37)]
1697 :[(4,41)]
1709 :[(22,35)]
1717 :[(6,41),(14,39)]
1721 :[(11,40)]
1733 :[(17,38)]
1737 :[(21,36)]
1741 :[(29,30)]
1745 :[(8,41),(28,31)]
1753 :[(27,32)]
1765 :[(1,42),(26,33)]
1769 :[(13,40),(20,37)]
1773 :[(3,42)]
1777 :[(16,39)]
1781 :[(10,41),(25,34)]
1789 :[(5,42)]
1801 :[(24,35)]
1805 :[(19,38)]
1813 :[(7,42)]
1825 :[(12,41),(15,40),(23,36)]
1845 :[(9,42),(18,39)]
1853 :[(2,43),(22,37)]
1861 :[(30,31)]
1865 :[(4,43),(29,32)]
1873 :[(28,33)]
1877 :[(14,41)]
1885 :[(6,43),(11,42),(21,38),(27,34)]
1889 :[(17,40)]
1901 :[(26,35)]
1913 :[(8,43)]
1921 :[(20,39),(25,36)]
1933 :[(13,42)]
1937 :[(1,44),(16,41)]
1945 :[(3,44),(24,37)]
1949 :[(10,43)]
1961 :[(5,44),(19,40)]
1973 :[(23,38)]
1985 :[(7,44),(31,32)]
1989 :[(15,42),(30,33)]
1993 :[(12,43)]
1997 :[(29,34)]
2005 :[(18,41),(22,39)]
2009 :[(28,35)]
2017 :[(9,44)]
2025 :[(27,36)]
2029 :[(2,45)]
2041 :[(4,45),(21,40)]
2045 :[(14,43),(26,37)]
2053 :[(17,42)]
2057 :[(11,44)]
2061 :[(6,45)]
2069 :[(25,38)]
2081 :[(20,41)]
2089 :[(8,45)]
2097 :[(24,39)]
2105 :[(13,44),(16,43)]
2113 :[(32,33)]
2117 :[(1,46),(31,34)]
2125 :[(3,46),(10,45),(19,42),(30,35)]
2129 :[(23,40)]
2137 :[(29,36)]
2141 :[(5,46)]
2153 :[(28,37)]
2161 :[(15,44)]
2165 :[(7,46),(22,41)]
2169 :[(12,45)]
2173 :[(18,43),(27,38)]
2197 :[(9,46),(26,39)]
2205 :[(21,42)]
2213 :[(2,47)]
2221 :[(14,45)]
2225 :[(4,47),(17,44),(25,40)]
2237 :[(11,46)]
2245 :[(6,47),(33,34)]
2249 :[(20,43),(32,35)]
2257 :[(24,41),(31,36)]
2269 :[(30,37)]
2273 :[(8,47)]
2281 :[(16,45)]
2285 :[(13,46),(29,38)]
2293 :[(23,42)]
2297 :[(19,44)]
2305 :[(1,48),(28,39)]
2309 :[(10,47)]
2313 :[(3,48)]
2329 :[(5,48),(27,40)]
2333 :[(22,43)]
2341 :[(15,46)]
2349 :[(18,45)]
2353 :[(7,48),(12,47)]
2357 :[(26,41)]
2377 :[(21,44)]
2381 :[(34,35)]
2385 :[(9,48),(33,36)]
2389 :[(25,42)]
2393 :[(32,37)]
2405 :[(2,49),(14,47),(17,46),(31,38)]
2417 :[(4,49)]
2421 :[(30,39)]
2425 :[(11,48),(20,45),(24,43)]
2437 :[(6,49)]
2441 :[(29,40)]
2465 :[(8,49),(16,47),(23,44),(28,41)]
2473 :[(13,48)]
2477 :[(19,46)]
2493 :[(27,42)]
2501 :[(1,50),(10,49)]
2509 :[(3,50),(22,45)]
2521 :[(35,36)]
2525 :[(5,50),(26,43),(34,37)]
2529 :[(15,48)]
2533 :[(18,47),(33,38)]
2545 :[(12,49),(32,39)]
2549 :[(7,50)]
2557 :[(21,46)]
2561 :[(25,44),(31,40)]
2581 :[(9,50),(30,41)]
2593 :[(17,48)]
2597 :[(14,49)]
2601 :[(24,45)]
2605 :[(2,51),(29,42)]
2609 :[(20,47)]
2617 :[(4,51)]
2621 :[(11,50)]
2633 :[(28,43)]
2637 :[(6,51)]
2645 :[(23,46)]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment