carmichael_gpf(p-1) = prime(n).pl 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. #!/usr/bin/perl
  2. # a(n) is the smallest Carmichael number such that gpf(p-1) = prime(n) for all prime factors p of a(n).
  3. use 5.020;
  4. use strict;
  5. use warnings;
  6. use experimental qw(signatures);
  7. use ntheory qw(:all);
  8. use List::Util qw(uniq);
  9. my %seen;
  10. my %table;
  11. while (<>) {
  12. next if /^\h*#/;
  13. /\S/ or next;
  14. my $n = (split(' ', $_))[-1];
  15. $n || next;
  16. next if ($n > 1e15);
  17. is_carmichael($n) or next;
  18. next if $seen{$n}++;
  19. my @gpf = uniq(map { (factor($_ - 1))[-1] } factor($n));
  20. if (@gpf == 1) {
  21. my $p = $gpf[0];
  22. $table{$p} //= $n;
  23. if ($n < $table{$p}) {
  24. $table{$p} = $n;
  25. }
  26. }
  27. }
  28. foreach my $p (sort { $a <=> $b } keys %table) {
  29. my $n = prime_count($p);
  30. say "a($n) = $table{$p}";
  31. }
  32. __END__
  33. # Upper-bounds < 10^15
  34. a(2) = 1729
  35. a(3) = 252601
  36. a(4) = 1152271
  37. a(5) = 1615681
  38. a(6) = 4335241
  39. a(7) = 172947529
  40. a(8) = 214852609
  41. a(9) = 79624621
  42. a(10) = 178837201
  43. a(11) = 775368901
  44. a(12) = 686059921
  45. a(13) = 985052881
  46. a(14) = 5781222721
  47. a(15) = 10277275681
  48. a(16) = 84350561
  49. a(17) = 5255104513
  50. a(18) = 492559141
  51. a(19) = 74340674101
  52. a(20) = 9293756581
  53. a(21) = 1200778753
  54. a(22) = 129971289169
  55. a(23) = 2230305949
  56. a(24) = 851703301
  57. a(25) = 8714965001
  58. a(26) = 6693621481
  59. a(27) = 3313196881
  60. a(28) = 704209440481
  61. a(29) = 537396116401
  62. a(30) = 2436691321
  63. a(31) = 74500799437
  64. a(32) = 542497201
  65. a(33) = 8346731851
  66. a(34) = 39283501681
  67. a(35) = 171615172321
  68. a(36) = 114012594697
  69. a(37) = 401397353281
  70. a(38) = 496950008129
  71. a(39) = 3091175755489
  72. a(40) = 42383927401
  73. a(41) = 88183003921
  74. a(42) = 76940276401
  75. a(43) = 516441599521
  76. a(44) = 1444635316441
  77. a(45) = 2246625745201
  78. a(46) = 46601368669
  79. a(47) = 5526520971721
  80. a(48) = 1797002211241
  81. a(49) = 6169135851841
  82. a(50) = 545009067541
  83. a(51) = 49237316749
  84. a(52) = 83946864769
  85. a(53) = 18500666251
  86. a(54) = 54519328481
  87. a(55) = 1849275141841
  88. a(56) = 15210276812821
  89. a(57) = 207222530621
  90. a(58) = 60246018673
  91. a(59) = 68926289491
  92. a(60) = 96464987884231
  93. a(61) = 6032781519073
  94. a(62) = 97887454669
  95. a(63) = 155706912481
  96. a(64) = 663162938677
  97. a(65) = 835085057941
  98. a(66) = 37371065373211
  99. a(67) = 191614761361
  100. a(68) = 110296864801
  101. a(69) = 469593692569
  102. a(70) = 116965170676481
  103. a(71) = 124711042468951
  104. a(72) = 13358856700001
  105. a(73) = 11109642966241
  106. a(74) = 112241637539329
  107. a(75) = 15239647744441
  108. a(76) = 9322668177409
  109. a(77) = 89726324722273
  110. a(78) = 40144845106081
  111. a(79) = 585210826621
  112. a(80) = 210359235841
  113. a(81) = 1101375141511
  114. a(82) = 82932179259511
  115. a(83) = 808025490721
  116. a(84) = 155999871721
  117. a(85) = 778373466563701
  118. a(86) = 635075174497
  119. a(87) = 3711846239473
  120. a(88) = 942121181242081
  121. a(89) = 4328349874081
  122. a(90) = 4460497633489
  123. a(91) = 23570421789223
  124. a(92) = 675518387329
  125. a(93) = 76897431373121
  126. a(94) = 34138047673
  127. a(95) = 14351225648761
  128. a(96) = 342267565249
  129. a(97) = 606244450001
  130. a(99) = 7472532278353
  131. a(100) = 73881755325361
  132. a(102) = 80535816022481
  133. a(103) = 61251633643201
  134. a(104) = 1671721833853
  135. a(105) = 108099149330593
  136. a(106) = 2739572924617
  137. a(107) = 5811733744867
  138. a(108) = 7689096933451
  139. a(109) = 138317418049441
  140. a(110) = 1407301287481
  141. a(111) = 1933026463201
  142. a(112) = 64278632045431
  143. a(113) = 667028583421201
  144. a(114) = 9035899110701
  145. a(115) = 6513448976101
  146. a(116) = 63280622521
  147. a(117) = 542904805653211
  148. a(118) = 189557159803021
  149. a(119) = 9265006341361
  150. a(120) = 144377609419
  151. a(121) = 14353280005201
  152. a(122) = 111829787722801
  153. a(123) = 236469841032097
  154. a(124) = 4485339189841
  155. a(125) = 2217790426321
  156. a(126) = 49336662504403
  157. a(127) = 6691635307237
  158. a(128) = 2803378414477
  159. a(129) = 2066548448161
  160. a(130) = 557281844263153
  161. a(131) = 5426319533881
  162. a(133) = 915245066821
  163. a(134) = 15181505298649
  164. a(135) = 1333189866793
  165. a(137) = 7982920590961
  166. a(138) = 353782889243281
  167. a(139) = 1640813492611
  168. a(140) = 3253891093249
  169. a(141) = 58307369350429
  170. a(142) = 16603719439201
  171. a(143) = 104637352579681
  172. a(144) = 717698178620677
  173. a(145) = 20513388000961
  174. a(146) = 95682503446921
  175. a(147) = 2295062283361
  176. a(148) = 22027380041449
  177. a(150) = 659758218778297
  178. a(151) = 538801421393041
  179. a(152) = 407683908691201
  180. a(153) = 3305918887501
  181. a(155) = 10639467691777
  182. a(156) = 24861821169953
  183. a(157) = 3478334679401
  184. a(158) = 141331442532337
  185. a(159) = 15996022879141
  186. a(160) = 1520339048617
  187. a(161) = 2752403727511
  188. a(162) = 191853284858371
  189. a(165) = 60171492397969
  190. a(167) = 10792799203033
  191. a(168) = 116734683934721
  192. a(169) = 53423698848521
  193. a(170) = 6737534294941
  194. a(171) = 3387719303201
  195. a(172) = 108576380939881
  196. a(173) = 28409580180901
  197. a(174) = 22799069430611
  198. a(175) = 3500683748641
  199. a(176) = 36864406699261
  200. a(177) = 218182075691761
  201. a(178) = 275315572388809
  202. a(179) = 9227833267201
  203. a(180) = 292920686606161
  204. a(181) = 17266428629521
  205. a(182) = 272144389369381
  206. a(183) = 473849459816041
  207. a(185) = 225593397919
  208. a(186) = 311136259926097
  209. a(187) = 144504006315841
  210. a(188) = 14685655594249
  211. a(189) = 71855633116801
  212. a(190) = 266804646492061
  213. a(191) = 509907568918441
  214. a(192) = 202970616135841
  215. a(193) = 58278208932721
  216. a(194) = 589249411166989
  217. a(195) = 124445761338001
  218. a(196) = 858329870809321
  219. a(197) = 186373066578841
  220. a(201) = 534919693681
  221. a(202) = 802324538751121
  222. a(203) = 232606449610081
  223. a(206) = 466492208670881
  224. a(207) = 35657087366521
  225. a(208) = 938844932257009
  226. a(209) = 1079942171239
  227. a(210) = 135569332772371
  228. a(214) = 308679446754001
  229. a(216) = 67230098982811
  230. a(217) = 1907431307473
  231. a(218) = 3267961077889
  232. a(219) = 413847154073161
  233. a(220) = 434366327142673
  234. a(221) = 3414146271409
  235. a(223) = 6111751219939
  236. a(224) = 2213587630609
  237. a(225) = 278976258696721
  238. a(226) = 60147974900777
  239. a(227) = 247920676141321
  240. a(228) = 17599414207789
  241. a(230) = 733547013841
  242. a(231) = 119284567146721
  243. a(232) = 271706486418091
  244. a(233) = 166850040563389
  245. a(234) = 5459740740721
  246. a(235) = 684951184963501
  247. a(236) = 471415146233921
  248. a(237) = 435808168218721
  249. a(239) = 63237358424809
  250. a(240) = 67075291742581
  251. a(243) = 326643457502917
  252. a(245) = 30748510093729
  253. a(246) = 113681131017001
  254. a(247) = 472838705571361
  255. a(251) = 86037782768521
  256. a(252) = 226544942470201
  257. a(253) = 295852868300881
  258. a(256) = 347324393184781
  259. a(262) = 88726557903229
  260. a(263) = 182778607585393
  261. a(264) = 902639995598041
  262. a(267) = 84103311076201
  263. a(269) = 137505554397121
  264. a(270) = 185691862389841
  265. a(275) = 30171469191361
  266. a(276) = 58774132848169
  267. a(280) = 46342628597851
  268. a(282) = 19155232884841
  269. a(283) = 20417651396911
  270. a(286) = 59424039230221
  271. a(287) = 346342548087073
  272. a(289) = 335333122310629
  273. a(290) = 92237829955561
  274. a(292) = 22139875582819
  275. a(294) = 3284486673199
  276. a(298) = 5716161256291
  277. a(301) = 174433946530177
  278. a(304) = 583248344253121
  279. a(305) = 913516269610621
  280. a(306) = 362418221500441
  281. a(307) = 431787268056961
  282. a(309) = 22386271857841
  283. a(312) = 68676437370283
  284. a(313) = 516815663303297
  285. a(317) = 46612722630601
  286. a(319) = 387196680013321
  287. a(323) = 15314068130791
  288. a(325) = 64677472557661
  289. a(326) = 56681876172949
  290. a(328) = 97005728268037
  291. a(330) = 112374872517529
  292. a(331) = 183017497463137
  293. a(339) = 179459761020121
  294. a(340) = 251215146358471
  295. a(341) = 78132246215581
  296. a(345) = 93266407023901
  297. a(348) = 647913102541249
  298. a(349) = 10606544136049
  299. a(353) = 559828923440257
  300. a(354) = 142921517891461
  301. a(357) = 668057010350689
  302. a(360) = 245826881776561
  303. a(363) = 208899207727057
  304. a(365) = 987403891009201
  305. a(370) = 122584803003391
  306. a(371) = 509128384975489
  307. a(373) = 361785450237121
  308. a(378) = 256098331149289
  309. a(379) = 272799315674161
  310. a(386) = 195809339861929
  311. a(388) = 81968098956169
  312. a(394) = 975038663971969
  313. a(395) = 25825129162489
  314. a(397) = 723688820413561
  315. a(398) = 491704482753961
  316. a(400) = 5932358886673
  317. a(402) = 81131078472589
  318. a(403) = 768813824846593
  319. a(406) = 65751233028433
  320. a(407) = 957920649572017
  321. a(409) = 19382653622201
  322. a(410) = 466764165410593
  323. a(414) = 50059736866021
  324. a(415) = 892735438510411
  325. a(416) = 303522605836561
  326. a(419) = 551470851860671
  327. a(420) = 193796596629901
  328. a(425) = 105070740188941
  329. a(427) = 582800396617601
  330. a(428) = 70362464581249
  331. a(429) = 186943489269571
  332. a(430) = 639618994408057
  333. a(431) = 567595107954211
  334. a(435) = 150604334361601
  335. a(436) = 782958537406021
  336. a(443) = 92327722290241
  337. a(444) = 186433901916289
  338. a(446) = 331939058141209
  339. a(447) = 78993355796317
  340. a(454) = 507603507510961
  341. a(457) = 181012858733617
  342. a(461) = 127946257707577
  343. a(463) = 24132461746513
  344. a(472) = 403162691222089
  345. a(473) = 541285881574831
  346. a(478) = 121667498301961
  347. a(480) = 398915918374777
  348. a(482) = 959231338715497
  349. a(488) = 10212920220721
  350. a(489) = 230318665188193
  351. a(492) = 398059734553489
  352. a(494) = 457240489374169
  353. a(496) = 671359249176841
  354. a(497) = 867571840268101
  355. a(503) = 541065853026001
  356. a(507) = 7991029901359
  357. a(508) = 434322810357157
  358. a(510) = 501291932351689
  359. a(512) = 961788162899701
  360. a(515) = 108622357428901
  361. a(523) = 778983303926761
  362. a(525) = 167060898315481
  363. a(526) = 589406924955031
  364. a(530) = 324059299005157
  365. a(535) = 439335727769761
  366. a(536) = 48430772527831
  367. a(547) = 117712078117561
  368. a(551) = 918232256400929
  369. a(560) = 487228269407833
  370. a(561) = 35682120672529
  371. a(566) = 630322281662221
  372. a(570) = 238259191994881
  373. a(591) = 751842206115281
  374. a(594) = 217185739973401
  375. a(598) = 69095196855889
  376. a(613) = 298620660945331
  377. a(614) = 66450537040501
  378. a(615) = 959377262271049
  379. a(635) = 279626980287649
  380. a(638) = 527972217183841
  381. a(659) = 363027260785561
  382. a(661) = 202923704101441
  383. a(668) = 806639557689181
  384. a(670) = 583116811950997
  385. a(673) = 911424098937601
  386. a(676) = 30931783745041
  387. a(691) = 469471809590281
  388. a(692) = 235826551730281
  389. a(695) = 927578863585441
  390. a(706) = 449006212584341
  391. a(717) = 761267068528297
  392. a(719) = 38663807592121
  393. a(737) = 225301895806609
  394. a(752) = 44709747732961
  395. a(760) = 251703127095769
  396. a(767) = 603267316619521
  397. a(790) = 117110384184289
  398. a(796) = 54508637981641
  399. a(799) = 71911523404267
  400. a(800) = 177177326318929
  401. a(815) = 70963404421681
  402. a(824) = 681510636081409
  403. a(837) = 180256151763913
  404. a(860) = 570542399253481
  405. a(861) = 214532551137781
  406. a(907) = 629824842551969
  407. a(909) = 102176253760681
  408. a(912) = 86671817900281
  409. a(919) = 62529366058699
  410. a(934) = 510637565929609
  411. a(956) = 257322414362551
  412. a(976) = 141952434183067
  413. a(982) = 601192212565969
  414. a(1015) = 683938014196609
  415. a(1046) = 447619754226769
  416. a(1234) = 684416901956761
  417. a(1260) = 260063696962081
  418. a(1311) = 954918141887569
  419. a(1416) = 276959986009939
  420. a(1452) = 512645597464681
  421. a(1548) = 914209579868729
  422. a(1594) = 700935697920313
  423. a(1596) = 761382476859187