```1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ``` ```; diophantine reciprocals (define (xy-pairs n) (let loop ((x (+ n 1)) (xys (list))) (if (< (+ n n) x) (reverse xys) (let ((y (/ (* x n) (- x n)))) (if (integer? y) (loop (+ x 1) (cons (list x y) xys)) (loop (+ x 1) xys)))))) (define (last-pair xs) (let ((tail (cdr xs))) (if (pair? tail) (last-pair tail) xs))) (define (cycle . xs) (set-cdr! (last-pair xs) xs) xs) (define factors (let ((wheel (cons 1 (cons 2 (cons 2 (cycle 4 2 4 2 4 6 2 6)))))) (lambda (n) (let loop ((n n) (f 2) (wheel wheel) (fs (list))) (if (< n (* f f)) (reverse (cons n fs)) (if (zero? (modulo n f)) (loop (/ n f) f wheel (cons f fs)) (loop n (+ f (car wheel)) (cdr wheel) fs))))))) (define (numdiv2 n) (let ((fs (factors n))) (let loop ((prev (car fs)) (fs (cdr fs)) (f 2) (d 1)) (cond ((null? fs) (* d (+ f 1))) ((= (car fs) prev) (loop prev (cdr fs) (+ f 2) d)) (else (loop (car fs) (cdr fs) 2 (* d (+ f 1)))))))) (define (xy-count n) (/ (+ (numdiv2 n) 1) 2)) (time (display (let loop ((n 1)) (if (<= 1000 (xy-count n)) n (loop (+ n 1))))) (newline)) (time (display (xy-pairs 180180)) (newline)) (display (= (+ (/ 180181) (/ 32465012580)) (/ 180180))) ```
 ```1 2 3 4 5 ``` ```180180 cpu time: 1268 real time: 1293 gc time: 10 ((180181 32465012580) (180182 16232596380) (180183 10821790980) (180184 8116388280) (180185 6493146660) (180186 5410985580) (180187 4638013380) (180188 4058284230) (180189 3607383780) (180190 3246663420) (180191 2951528580) (180192 2705582880) (180193 2497474980) (180194 2319096780) (180195 2164502340) (180196 2029232205) (180198 1803781980) (180200 1623421800) (180201 1546124580) (180202 1475854380) (180204 1352881530) (180205 1298773476) (180206 1248827580) (180207 1202581380) (180208 1159638480) (180210 1082341260) (180213 983962980) (180215 927746820) (180216 901981080) (180219 832611780) (180220 811800990) (180222 773152380) (180224 738017280) (180225 721620900) (180228 676530855) (180229 662727780) (180230 649476828) (180232 624503880) (180234 601380780) (180235 590449860) (180236 579909330) (180240 541260720) (180243 515494980) (180245 499639140) (180246 492071580) (180250 463963500) (180252 451080630) (180255 433044612) (180257 421801380) (180258 416395980) (180260 405990585) (180261 400980580) (180264 386666280) (180268 369098730) (180270 360900540) (180271 356936580) (180278 331453980) (180279 328107780) (180280 324828504) (180284 312342030) (180285 309369060) (180288 300780480) (180290 295315020) (180292 290044755) (180297 277657380) (180300 270720450) (180301 268484580) (180306 257837580) (180310 249909660) (180312 246125880) (180315 240660420) (180320 232071840) (180323 227206980) (180324 225630405) (180327 221029380) (180330 216612396) (180334 210990780) (180336 208288080) (180342 200580380) (180345 196936740) (180348 193423230) (180349 192279780) (180355 185693508) (180356 184639455) (180360 180540360) (180362 178558380) (180369 171951780) (180375 166666500) (180376 165817080) (180378 164143980) (180380 162504342) (180388 156261105) (180390 154774620) (180396 150480330) (180400 147747600) (180405 144468324) (180411 140720580) (180414 138918780) (180420 135450315) (180422 134332380) (180425 132689700) (180432 129008880) (180440 125044920) (180444 123153030) (180450 120420300) (180453 119098980) (180455 118234116) (180460 116126010) (180466 113693580) (180474 110604780) (180477 109489380) (180480 108396288) (180488 105585480) (180492 104234130) (180495 103243140) (180504 100380280) (180505 100071972) (180510 98558460) (180516 96801705) (180518 96229980) (180530 92936844) (180531 92672580) (180540 90360270) (180543 89614980) (180544 89369280) (180558 86065980) (180565 84504420) (180570 83423340) (180572 82998630) (180576 82162080) (180580 81342261) (180585 80340260) (180600 77477400) (180609 75855780) (180612 75330255) (180620 73963890) (180621 73796580) (180630 72324252) (180635 71531460) (180642 70450380) (180648 69549480) (180664 67256280) (180670 66434940) (180675 65765700) (180684 64594530) (180687 64213380) (180700 62612550) (180705 62017956) (180708 61666605) (180719 60411780) (180720 60300240) (180726 59639580) (180730 59207148) (180740 58153095) (180747 57437380) (180752 56936880) (180765 55675620) (180768 55392480) (180774 54834780) (180780 54288234) (180785 53841060) (180796 52882830) (180804 52207155) (180810 51711660) (180817 51145380) (180828 50280230) (180830 50126076) (180840 49369320) (180855 48276228) (180856 48205080) (180873 47026980) (180880 46558512) (180882 46426380) (180895 45585540) (180900 45270225) (180906 44897580) (180908 44774730) (180915 44350020) (180936 43123080) (180950 42342300) (180960 41801760) (180964 41589405) (180972 41171130) (180990 40260220) (180999 39819780) (181005 39531492) (181020 38828790) (181025 38600100) (181027 38509380) (181038 38017980) (181060 37072035) (181062 36988380) (181071 36616580) (181080 36252216) (181090 35855820) (181104 35315280) (181116 34864830) (181125 34534500) (181148 33718230) (181155 33477444) (181160 33307560) (181170 32972940) (181181 32612580) (181188 32387355) (181194 32196780) (181220 31396365) (181230 31099068) (181233 31010980) (181258 30295980) (181260 30240210) (181269 29991780) (181272 29909880) (181280 29693664) (181314 28808780) (181324 28558530) (181335 28288260) (181350 27927900) (181356 27786330) (181363 27622980) (181368 27507480) (181380 27234207) (181390 27010620) (181405 26682084) (181412 26531505) (181440 25945920) (181454 25662780) (181467 25405380) (181476 25230205) (181480 25153128) (181500 24774750) (181503 24718980) (181530 24228204) (181532 24192630) (181545 23963940) (181566 23603580) (181580 23369346) (181584 23303280) (181610 22882860) (181632 22538880) (181636 22477455) (181650 22265100) (181665 22042020) (181692 21651630) (181701 21524580) (181720 21261240) (181740 20990970) (181753 20818980) (181755 20792772) (181764 20675655) (181797 20257380) (181800 20220200) (181818 19999980) (181830 19855836) (181860 19504485) (181870 19390140) (181874 19344780) (181896 19099080) (181935 18678660) (181944 18584280) (181962 18398380) (181980 18216198) (181995 18067140) (182000 18018000) (182028 17747730) (182039 17643780) (182052 17522505) (182070 17357340) (182091 17168580) (182105 17045028) (182116 16949205) (182130 16828812) (182140 16743870) (182160 16576560) (182182 16396380) (182205 16212196) (182208 16188480) (182259 15795780) (182280 15639624) (182286 15595580) (182325 15315300) (182336 15238080) (182340 15210195) (182358 15085980) (182364 15045030) (182380 14936922) (182385 14903460) (182448 14494480) (182455 14450436) (182468 14369355) (182490 14234220) (182520 14054040) (182532 13983255) (182546 13901580) (182556 13843830) (182600 13595400) (182630 13431132) (182637 13393380) (182655 13297284) (182700 13063050) (182715 12986820) (182721 12956580) (182728 12921480) (182754 12792780) (182780 12666654) (182820 12477465) (182826 12449580) (182875 12226500) (182880 12204192) (182884 12186405) (182910 12072060) (182952 11891880) (182980 11774763) (182988 11741730) (183015 11631620) (183040 11531520) (183084 11359530) (183105 11279268) (183120 11222640) (183150 11111100) (183183 10990980) (183204 10915905) (183205 10912356) (183222 10852380) (183260 10720710) (183300 10585575) (183326 10499580) (183330 10486476) (183365 10373220) (183414 10218780) (183420 10200190) (183447 10117380) (183456 10090080) (183480 10018008) (183560 9785160) (183568 9762480) (183612 9639630) (183645 9549540) (183690 9429420) (183708 9382230) (183729 9327780) (183744 9289280) (183755 9261252) (183780 9198189) (183810 9123660) (183820 9099090) (183855 9014148) (183876 8963955) (183898 8911980) (183960 8768760) (184002 8674380) (184030 8612604) (184041 8588580) (184080 8504496) (184100 8462025) (184140 8378370) (184149 8359780) (184184 8288280) (184230 8196188) (184236 8184330) (184275 8108100) (184338 7987980) (184380 7909902) (184392 7887880) (184405 7864164) (184415 7846020) (184470 7747740) (184492 7709130) (184536 7633080) (184548 7612605) (184580 7558551) (184590 7541820) (184635 7467460) (184716 7337330) (184730 7315308) (184743 7294980) (184800 7207200) (184860 7117110) (184899 7059780) (184905 7051044) (184912 7040880) (184932 7012005) (185020 6887790) (185031 6872580) (185080 6805656) (185094 6786780) (185130 6738732) (185185 6666660) (185220 6621615) (185250 6583500) (185262 6568380) (185276 6550830) (185328 6486480) (185380 6423417) (185445 6346340) (185472 6314880) (185570 6203340) (185580 6192186) (185625 6142500) (185640 6126120) (185724 6036030) (185757 6001380) (185796 5960955) (185850 5905900) (185900 5855850) (185913 5842980) (185955 5801796) (185988 5769855) (186030 5729724) (186060 5701410) (186095 5668740) (186109 5655780) (186120 5645640) (186186 5585580) (186230 5546268) (186264 5516280) (186340 5450445) (186417 5385380) (186472 5339880) (186480 5333328) (186550 5276700) (186615 5225220) (186648 5199480) (186660 5190185) (186714 5148780) (186732 5135130) (186780 5099094) (186795 5087940) (186940 4982670) (186956 4971330) (187005 4936932) (187044 4909905) (187110 4864860) (187187 4813380) (187200 4804800) (187236 4781205) (187278 4753980) (187308 4734730) (187330 4720716) (187440 4651920) (187460 4639635) (187530 4597164) (187551 4584580) (187605 4552548) (187616 4546080) (187740 4474470) (187785 4449060) (187803 4438980) (187824 4427280) (187880 4396392) (187902 4384380) (187980 4342338) (188045 4307940) (188100 4279275) (188118 4269980) (188188 4234230) (188265 4195620) (188280 4188184) (188292 4182255) (188370 4144140) (188461 4100580) (188496 4084080) (188580 4045041) (188604 4034030) (188630 4022172) (188650 4013100) (188760 3963960) (188804 3944655) (188892 3906630) (188955 3879876) (189000 3861000) (189090 3823820) (189189 3783780) (189252 3758755) (189255 3757572) (189280 3747744) (189306 3737580) (189420 3693690) (189475 3672900) (189540 3648645) (189618 3619980) (189630 3615612) (189644 3610530) (189735 3577860) (189860 3533985) (189882 3526380) (189980 3492918) (189981 3492580) (190008 3483480) (190080 3459456) (190190 3423420) (190320 3381840) (190344 3374280) (190372 3365505) (190476 3333330) (190575 3303300) (190710 3263260) (190764 3247530) (190827 3229380) (190905 3207204) (190960 3191760) (190980 3186183) (191070 3161340) (191100 3153150) (191191 3128580) (191205 3124836) (191268 3108105) (191334 3090780) (191520 3043040) (191620 3018015) (191646 3011580) (191730 2990988) (191763 2982980) (191880 2954952) (191940 2940795) (192010 2924460) (192038 2917980) (192060 2912910) (192192 2882880) (192280 2863224) (192348 2848230) (192465 2822820) (192654 2782780) (192764 2760030) (192780 2756754) (192855 2741508) (192885 2735460) (192920 2728440) (193050 2702700) (193116 2689830) (193193 2674980) (193248 2664480) (193284 2657655) (193380 2639637) (193410 2634060) (193655 2589444) (193700 2581425) (193732 2575755) (193830 2558556) (193869 2551780) (194040 2522520) (194194 2496780) (194220 2492490) (194337 2473380) (194355 2470468) (194376 2467080) (194436 2457455) (194480 2450448) (194700 2416050) (194733 2410980) (194880 2388672) (194922 2382380) (195030 2366364) (195052 2363130) (195195 2342340) (195300 2327325) (195390 2314620) (195426 2309580) (195468 2303730) (195580 2288286) (195624 2282280) (195780 2261259) (195910 2244060) (196056 2225080) (196105 2218788) (196196 2207205) (196350 2187900) (196380 2184182) (196515 2167620) (196560 2162160) (196742 2140380) (196812 2132130) (196911 2120580) (197028 2107105) (197080 2101176) (197120 2096640) (197340 2072070) (197379 2067780) (197505 2054052) (197604 2043405) (197730 2030028) (197820 2020590) (197925 2009700) (197967 2005380) (198000 2002000) (198198 1981980) (198330 1968876) (198380 1963962) (198432 1958880) (198660 1936935) (198770 1926540) (199056 1900080) (199080 1897896) (199108 1895355) (199290 1879020) (199485 1861860) (199584 1853280) (199780 1836549) (199782 1836380) (199836 1831830) (199980 1819818) (200025 1816100) (200200 1801800) (200460 1781010) (200508 1777230) (200629 1767780) (200655 1765764) (200772 1756755) (200970 1741740) (201201 1724580) (201240 1721720) (201348 1713855) (201355 1713348) (201474 1704780) (201630 1693692) (201740 1685970) (201960 1670760) (202020 1666665) (202202 1654380) (202230 1652508) (202455 1637636) (202488 1635480) (202860 1611610) (202995 1603140) (203049 1599780) (203112 1595880) (203280 1585584) (203346 1581580) (203580 1567566) (203775 1556100) (203840 1552320) (203896 1549080) (203940 1546545) (204204 1531530) (204380 1521702) (204435 1518660) (204516 1514205) (204750 1501500) (205023 1486980) (205128 1481480) (205205 1477476) (205348 1470105) (205380 1468467) (205530 1460844) (205590 1457820) (205660 1454310) (205920 1441440) (206052 1435005) (206206 1427580) (206316 1422330) (206505 1413412) (206640 1407120) (207130 1384812) (207207 1381380) (207405 1372644) (207480 1369368) (207558 1365980) (207900 1351350) (208065 1344420) (208208 1338480) (208260 1336335) (208494 1326780) (208530 1325324) (208572 1323630) (208780 1315314) (208845 1312740) (209220 1298115) (209286 1295580) (209580 1284426) (209664 1281280) (209755 1277892) (209825 1275300) (209880 1273272) (209924 1271655) (210210 1261260) (210600 1247400) (210672 1244880) (210756 1241955) (210980 1234233) (211068 1231230) (211365 1221220) (211640 1212120) (211932 1202630) (212030 1199484) (212121 1196580) (212355 1189188) (212520 1184040) (212580 1182181) (212850 1173900) (212940 1171170) (213213 1162980) (213255 1161732) (213304 1160280) (213444 1156155) (213642 1150380) (213980 1140678) (214060 1138410) (214500 1126125) (214578 1123980) (214830 1117116) (215215 1106820) (215280 1105104) (215460 1100385) (215670 1094940) (215754 1092780) (215820 1091090) (216216 1081080) (216480 1074528) (216580 1072071) (216684 1069530) (217035 1061060) (217360 1053360) (217932 1040130) (217980 1039038) (218205 1033956) (218295 1031940) (218400 1029600) (218790 1021020) (218988 1016730) (219219 1011780) (219384 1008280) (219492 1006005) (219505 1005732) (219780 999999) (219870 998140) (220220 990990) (220605 983268) (220740 980595) (220836 978705) (221078 973980) (221130 972972) (221585 964260) (221760 960960) (222222 952380) (222300 950950) (222530 946764) (222651 944580) (222768 942480) (223080 936936) (223300 933075) (223740 925470) (223839 923780) (224224 917280) (224280 916344) (224730 908908) (224796 907830) (225225 900900) (225540 895895) (225810 891660) (225918 889980) (226044 888030) (226380 882882) (226512 880880) (226655 878724) (226980 873873) (227370 868140) (227500 866250) (227612 864630) (227955 859716) (228228 855855) (228580 850941) (228690 849420) (229185 842660) (229320 840840) (229866 833580) (230076 830830) (230230 828828) (230373 826980) (230880 820512) (231000 819000) (231140 817245) (231660 810810) (231777 809380) (232155 804804) (232232 803880) (232452 801255) (232830 796796) (233100 793650) (233415 790020) (233541 788580) (234080 782496) (234234 780780) (234630 776412) (234780 774774) (234936 773080) (235235 769860) (235620 765765) (235950 762300) (236236 759330) (236808 753480) (236880 752752) (236964 751905) (237380 747747) (237510 746460) (238095 740740) (238392 737880) (238980 732303) (239148 730730) (239330 729036) (239470 727740) (239580 726726) (240240 720720) (241020 713790) (241164 712530) (241527 709380) (241605 708708) (241956 705705) (242550 700700) (243100 696150) (243243 694980) (243684 691405) (243705 691236) (243880 689832) (244062 688380) (244530 684684) (244860 682110) (245245 679140) (245520 677040) (245700 675675) (246246 671580) (246330 670956) (246428 670230) (247104 665280) (247780 660429) (247940 659295) (248625 654500) (248787 653380) (248976 652080) (249480 648648) (250250 643500) (250380 642642) (250965 638820) (251160 637560) (251328 636480) (251460 635635) (252252 630630) (252780 627354) (252945 626340) (253188 624855) (253890 620620) (254540 616770) (254709 615780) (255255 612612) (255684 610155) (255780 609609) (256230 607068) (256410 606060) (256620 604890) (257257 601380) (257400 600600) (257796 598455) (258258 595980) (258588 594230) (258830 592956) (259560 589160) (260260 585585) (261030 581724) (261261 580580) (261855 577668) (261976 577080) (262080 576576) (262990 572220) (263340 570570) (263835 568260) (264264 566280) (264420 565565) (264880 563472) (265122 562380) (265356 561330) (265980 558558) (266175 557700) (267300 552825) (267498 551980) (268268 548730) (268380 548262) (268905 546084) (269115 545220) (269280 544544) (269412 544005) (270270 540540) (271271 536580) (271440 535920) (271656 535080) (271908 534105) (272580 531531) (272844 530530) (273130 529452) (274560 524160) (274820 523215) (275044 522405) (275730 519948) (276003 518980) (276705 516516) (277200 514800) (278190 511420) (278460 510510) (279279 507780) (279405 507364) (279552 506880) (279972 505505) (280280 504504) (280566 503580) (281580 500346) (281820 499590) (282425 497700) (283140 495495) (283374 494780) (284130 492492) (284284 492030) (285285 489060) (285480 488488) (286020 486915) (286650 485100) (286902 484380) (287980 481338) (288288 480480) (289080 478296) (289380 477477) (289692 476630) (290290 475020) (291720 471240) (292292 469755) (293436 466830) (293580 466466) (294255 464772) (294525 464100) (294840 463320) (296010 460460) (296604 459030) (297297 457380) (298116 455455) (298155 455364) (298480 454608) (298760 453960) (298980 453453) (300300 450450) (301455 447876) (301860 446985) (302148 446355) (302874 444780) (303030 444444) (304395 441540) (304920 440440) (306020 438165) (306306 437580) (307230 435708) (307580 435006) (307593 434980) (307944 434280) (308880 432432) (309540 431145) (310310 429660) (310860 428610) (312312 425880) (312480 425568) (312676 425205) (314028 422730) (315315 420420) (317070 417340) (317394 416780) (317772 416130) (318780 414414) (319605 413028) (320320 411840) (320580 411411) (321750 409500) (322140 408870) (322476 408330) (323323 406980) (323505 406692) (324324 405405) (325380 403767) (325710 403260) (327600 400400) (328405 399204) (328900 398475) (329238 397980) (330330 396396) (330759 395780) (332280 393624) (332640 393120) (333060 392535) (334334 390780) (334620 390390) (336105 388388) (336336 388080) (336996 387205) (337480 386568) (338940 384670) (339885 383460) (340263 382980) (341880 380952) (342342 380380) (343530 378924) (343772 378630) (343980 378378) (345345 376740) (345800 376200) (346500 375375) (347490 374220) (348348 373230) (349580 371826) (350064 371280) (350532 370755) (351780 369369) (352170 368940) (354816 366080) (355355 365508) (356356 364455) (356580 364221) (357630 363132) (358050 362700) (358380 362362) (360360 360360)) cpu time: 373 real time: 398 gc time: 141 #t```