前言

算术基本定理

对于任何一个大于1的合数,都能分解成有限个质数的乘积
数论 - 图4

裴蜀定理

存在整数 x,y 使得 数论 - 图5%20%3D%20ax%20%2B%20by%3C%2Ftitle%3E%0A%3Cdefs%20aria-hidden%3D%22true%22%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-67%22%20d%3D%22M311%2043Q296%2030%20267%2015T206%200Q143%200%20105%2045T66%20160Q66%20265%20143%20353T314%20442Q361%20442%20401%20394L404%20398Q406%20401%20409%20404T418%20412T431%20419T447%20422Q461%20422%20470%20413T480%20394Q480%20379%20423%20152T363%20-80Q345%20-134%20286%20-169T151%20-205Q10%20-205%2010%20-137Q10%20-111%2028%20-91T74%20-71Q89%20-71%20102%20-80T116%20-111Q116%20-121%20114%20-130T107%20-144T99%20-154T92%20-162L90%20-164H91Q101%20-167%20151%20-167Q189%20-167%20211%20-155Q234%20-144%20254%20-122T282%20-75Q288%20-56%20298%20-13Q311%2035%20311%2043ZM384%20328L380%20339Q377%20350%20375%20354T369%20368T359%20382T346%20393T328%20402T306%20405Q262%20405%20221%20352Q191%20313%20171%20233T151%20117Q151%2038%20213%2038Q269%2038%20323%20108L331%20118L384%20328Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-63%22%20d%3D%22M34%20159Q34%20268%20120%20355T306%20442Q362%20442%20394%20418T427%20355Q427%20326%20408%20306T360%20285Q341%20285%20330%20295T319%20325T330%20359T352%20380T366%20386H367Q367%20388%20361%20392T340%20400T306%20404Q276%20404%20249%20390Q228%20381%20206%20359Q162%20315%20142%20235T121%20119Q121%2073%20147%2050Q169%2026%20205%2026H209Q321%2026%20394%20111Q403%20121%20406%20121Q410%20121%20419%20112T429%2098T420%2083T391%2055T346%2025T282%200T202%20-11Q127%20-11%2081%2037T34%20159Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-64%22%20d%3D%22M366%20683Q367%20683%20438%20688T511%20694Q523%20694%20523%20686Q523%20679%20450%20384T375%2083T374%2068Q374%2026%20402%2026Q411%2027%20422%2035Q443%2055%20463%20131Q469%20151%20473%20152Q475%20153%20483%20153H487H491Q506%20153%20506%20145Q506%20140%20503%20129Q490%2079%20473%2048T445%208T417%20-8Q409%20-10%20393%20-10Q359%20-10%20336%205T306%2036L300%2051Q299%2052%20296%2050Q294%2048%20292%2046Q233%20-10%20172%20-10Q117%20-10%2075%2030T33%20157Q33%20205%2053%20255T101%20341Q148%20398%20195%20420T280%20442Q336%20442%20364%20400Q369%20394%20369%20396Q370%20400%20396%20505T424%20616Q424%20629%20417%20632T378%20637H357Q351%20643%20351%20645T353%20664Q358%20683%20366%20683ZM352%20326Q329%20405%20277%20405Q242%20405%20210%20374T160%20293Q131%20214%20119%20129Q119%20126%20119%20118T118%20106Q118%2061%20136%2044T179%2026Q233%2026%20290%2098L298%20109L352%20326Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMAIN-28%22%20d%3D%22M94%20250Q94%20319%20104%20381T127%20488T164%20576T202%20643T244%20695T277%20729T302%20750H315H319Q333%20750%20333%20741Q333%20738%20316%20720T275%20667T226%20581T184%20443T167%20250T184%2058T225%20-81T274%20-167T316%20-220T333%20-241Q333%20-250%20318%20-250H315H302L274%20-226Q180%20-141%20137%20-14T94%20250Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-61%22%20d%3D%22M33%20157Q33%20258%20109%20349T280%20441Q331%20441%20370%20392Q386%20422%20416%20422Q429%20422%20439%20414T449%20394Q449%20381%20412%20234T374%2068Q374%2043%20381%2035T402%2026Q411%2027%20422%2035Q443%2055%20463%20131Q469%20151%20473%20152Q475%20153%20483%20153H487Q506%20153%20506%20144Q506%20138%20501%20117T481%2063T449%2013Q436%200%20417%20-8Q409%20-10%20393%20-10Q359%20-10%20336%205T306%2036L300%2051Q299%2052%20296%2050Q294%2048%20292%2046Q233%20-10%20172%20-10Q117%20-10%2075%2030T33%20157ZM351%20328Q351%20334%20346%20350T323%20385T277%20405Q242%20405%20210%20374T160%20293Q131%20214%20119%20129Q119%20126%20119%20118T118%20106Q118%2061%20136%2044T179%2026Q217%2026%20254%2059T298%20110Q300%20114%20325%20217T351%20328Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMAIN-2C%22%20d%3D%22M78%2035T78%2060T94%20103T137%20121Q165%20121%20187%2096T210%208Q210%20-27%20201%20-60T180%20-117T154%20-158T130%20-185T117%20-194Q113%20-194%20104%20-185T95%20-172Q95%20-168%20106%20-156T131%20-126T157%20-76T173%20-3V9L172%208Q170%207%20167%206T161%203T152%201T140%200Q113%200%2096%2017Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-62%22%20d%3D%22M73%20647Q73%20657%2077%20670T89%20683Q90%20683%20161%20688T234%20694Q246%20694%20246%20685T212%20542Q204%20508%20195%20472T180%20418L176%20399Q176%20396%20182%20402Q231%20442%20283%20442Q345%20442%20383%20396T422%20280Q422%20169%20343%2079T173%20-11Q123%20-11%2082%2027T40%20150V159Q40%20180%2048%20217T97%20414Q147%20611%20147%20623T109%20637Q104%20637%20101%20637H96Q86%20637%2083%20637T76%20640T73%20647ZM336%20325V331Q336%20405%20275%20405Q258%20405%20240%20397T207%20376T181%20352T163%20330L157%20322L136%20236Q114%20150%20114%20114Q114%2066%20138%2042Q154%2026%20178%2026Q211%2026%20245%2058Q270%2081%20285%20114T318%20219Q336%20291%20336%20325Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMAIN-29%22%20d%3D%22M60%20749L64%20750Q69%20750%2074%20750H86L114%20726Q208%20641%20251%20514T294%20250Q294%20182%20284%20119T261%2012T224%20-76T186%20-143T145%20-194T113%20-227T90%20-246Q87%20-249%2086%20-250H74Q66%20-250%2063%20-250T58%20-247T55%20-238Q56%20-237%2066%20-225Q221%20-64%20221%20250T66%20725Q56%20737%2055%20738Q55%20746%2060%20749Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMAIN-3D%22%20d%3D%22M56%20347Q56%20360%2070%20367H707Q722%20359%20722%20347Q722%20336%20708%20328L390%20327H72Q56%20332%2056%20347ZM56%20153Q56%20168%2072%20173H708Q722%20163%20722%20153Q722%20140%20707%20133H70Q56%20140%2056%20153Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-78%22%20d%3D%22M52%20289Q59%20331%20106%20386T222%20442Q257%20442%20286%20424T329%20379Q371%20442%20430%20442Q467%20442%20494%20420T522%20361Q522%20332%20508%20314T481%20292T458%20288Q439%20288%20427%20299T415%20328Q415%20374%20465%20391Q454%20404%20425%20404Q412%20404%20406%20402Q368%20386%20350%20336Q290%20115%20290%2078Q290%2050%20306%2038T341%2026Q378%2026%20414%2059T463%20140Q466%20150%20469%20151T485%20153H489Q504%20153%20504%20145Q504%20144%20502%20134Q486%2077%20440%2033T333%20-11Q263%20-11%20227%2052Q186%20-10%20133%20-10H127Q78%20-10%2057%2016T35%2071Q35%20103%2054%20123T99%20143Q142%20143%20142%20101Q142%2081%20130%2066T107%2046T94%2041L91%2040Q91%2039%2097%2036T113%2029T132%2026Q168%2026%20194%2071Q203%2087%20217%20139T245%20247T261%20313Q266%20340%20266%20352Q266%20380%20251%20392T217%20404Q177%20404%20142%20372T93%20290Q91%20281%2088%20280T72%20278H58Q52%20284%2052%20289Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMAIN-2B%22%20d%3D%22M56%20237T56%20250T70%20270H369V420L370%20570Q380%20583%20389%20583Q402%20583%20409%20568V270H707Q722%20262%20722%20250T707%20230H409V-68Q401%20-82%20391%20-82H389H387Q375%20-82%20369%20-68V230H70Q56%20237%2056%20250Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-79%22%20d%3D%22M21%20287Q21%20301%2036%20335T84%20406T158%20442Q199%20442%20224%20419T250%20355Q248%20336%20247%20334Q247%20331%20231%20288T198%20191T182%20105Q182%2062%20196%2045T238%2027Q261%2027%20281%2038T312%2061T339%2094Q339%2095%20344%20114T358%20173T377%20247Q415%20397%20419%20404Q432%20431%20462%20431Q475%20431%20483%20424T494%20412T496%20403Q496%20390%20447%20193T391%20-23Q363%20-106%20294%20-155T156%20-205Q111%20-205%2077%20-183T43%20-117Q43%20-95%2050%20-80T69%20-58T89%20-48T106%20-45Q150%20-45%20150%20-87Q150%20-107%20138%20-122T115%20-142T102%20-147L99%20-148Q101%20-153%20118%20-160T152%20-167H160Q177%20-167%20186%20-165Q219%20-156%20247%20-127T290%20-65T313%20-9T321%2021L315%2017Q309%2013%20296%206T270%20-6Q250%20-11%20231%20-11Q185%20-11%20150%2011T104%2082Q103%2089%20103%20113Q103%20170%20138%20262T173%20379Q173%20380%20173%20381Q173%20390%20173%20393T169%20400T158%20404H154Q131%20404%20112%20385T82%20344T65%20302T57%20280Q55%20278%2041%20278H27Q21%20284%2021%20287Z%22%3E%3C%2Fpath%3E%0A%3C%2Fdefs%3E%0A%3Cg%20stroke%3D%22currentColor%22%20fill%3D%22currentColor%22%20stroke-width%3D%220%22%20transform%3D%22matrix(1%200%200%20-1%200%200)%22%20aria-hidden%3D%22true%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-67%22%20x%3D%220%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-63%22%20x%3D%22480%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-64%22%20x%3D%22914%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-28%22%20x%3D%221437%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-61%22%20x%3D%221827%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-2C%22%20x%3D%222356%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-62%22%20x%3D%222801%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-29%22%20x%3D%223231%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-3D%22%20x%3D%223898%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-61%22%20x%3D%224954%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-78%22%20x%3D%225484%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-2B%22%20x%3D%226278%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-62%22%20x%3D%227279%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-79%22%20x%3D%227709%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3C%2Fg%3E%0A%3C%2Fsvg%3E#card=math&code=gcd%28a%2Cb%29%20%3D%20ax%20%2B%20by&height=20&id=nTu6F)


数论四大定理

威尔逊定理

若p为质数,则数论 - 图6 (p可以整除(p-1)!+1)

欧拉定理

若n,a为正整数,且n,a互质,则数论 - 图7%7D%20%5C%3B%20%5Cequiv%20%5C%3B%201%20%5C%3B%20(mod%20%5C%3B%20n)%3C%2Ftitle%3E%0A%3Cdefs%20aria-hidden%3D%22true%22%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-61%22%20d%3D%22M33%20157Q33%20258%20109%20349T280%20441Q331%20441%20370%20392Q386%20422%20416%20422Q429%20422%20439%20414T449%20394Q449%20381%20412%20234T374%2068Q374%2043%20381%2035T402%2026Q411%2027%20422%2035Q443%2055%20463%20131Q469%20151%20473%20152Q475%20153%20483%20153H487Q506%20153%20506%20144Q506%20138%20501%20117T481%2063T449%2013Q436%200%20417%20-8Q409%20-10%20393%20-10Q359%20-10%20336%205T306%2036L300%2051Q299%2052%20296%2050Q294%2048%20292%2046Q233%20-10%20172%20-10Q117%20-10%2075%2030T33%20157ZM351%20328Q351%20334%20346%20350T323%20385T277%20405Q242%20405%20210%20374T160%20293Q131%20214%20119%20129Q119%20126%20119%20118T118%20106Q118%2061%20136%2044T179%2026Q217%2026%20254%2059T298%20110Q300%20114%20325%20217T351%20328Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-3C6%22%20d%3D%22M92%20210Q92%20176%20106%20149T142%20108T185%2085T220%2072L235%2070L237%2071L250%20112Q268%20170%20283%20211T322%20299T370%20375T429%20423T502%20442Q547%20442%20582%20410T618%20302Q618%20224%20575%20152T457%2035T299%20-10Q273%20-10%20273%20-12L266%20-48Q260%20-83%20252%20-125T241%20-179Q236%20-203%20215%20-212Q204%20-218%20190%20-218Q159%20-215%20159%20-185Q159%20-175%20214%20-2L209%200Q204%202%20195%205T173%2014T147%2028T120%2046T94%2071T71%20103T56%20142T50%20190Q50%20238%2076%20311T149%20431H162Q183%20431%20183%20423Q183%20417%20175%20409Q134%20361%20114%20300T92%20210ZM574%20278Q574%20320%20550%20344T486%20369Q437%20369%20394%20329T323%20218Q309%20184%20295%20109L286%2064Q304%2062%20306%2062Q423%2062%20498%20131T574%20278Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMAIN-28%22%20d%3D%22M94%20250Q94%20319%20104%20381T127%20488T164%20576T202%20643T244%20695T277%20729T302%20750H315H319Q333%20750%20333%20741Q333%20738%20316%20720T275%20667T226%20581T184%20443T167%20250T184%2058T225%20-81T274%20-167T316%20-220T333%20-241Q333%20-250%20318%20-250H315H302L274%20-226Q180%20-141%20137%20-14T94%20250Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-6E%22%20d%3D%22M21%20287Q22%20293%2024%20303T36%20341T56%20388T89%20425T135%20442Q171%20442%20195%20424T225%20390T231%20369Q231%20367%20232%20367L243%20378Q304%20442%20382%20442Q436%20442%20469%20415T503%20336T465%20179T427%2052Q427%2026%20444%2026Q450%2026%20453%2027Q482%2032%20505%2065T540%20145Q542%20153%20560%20153Q580%20153%20580%20145Q580%20144%20576%20130Q568%20101%20554%2073T508%2017T439%20-10Q392%20-10%20371%2017T350%2073Q350%2092%20386%20193T423%20345Q423%20404%20379%20404H374Q288%20404%20229%20303L222%20291L189%20157Q156%2026%20151%2016Q138%20-11%20108%20-11Q95%20-11%2087%20-5T76%207T74%2017Q74%2030%20112%20180T152%20343Q153%20348%20153%20366Q153%20405%20129%20405Q91%20405%2066%20305Q60%20285%2060%20284Q58%20278%2041%20278H27Q21%20284%2021%20287Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMAIN-29%22%20d%3D%22M60%20749L64%20750Q69%20750%2074%20750H86L114%20726Q208%20641%20251%20514T294%20250Q294%20182%20284%20119T261%2012T224%20-76T186%20-143T145%20-194T113%20-227T90%20-246Q87%20-249%2086%20-250H74Q66%20-250%2063%20-250T58%20-247T55%20-238Q56%20-237%2066%20-225Q221%20-64%20221%20250T66%20725Q56%20737%2055%20738Q55%20746%2060%20749Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMAIN-2261%22%20d%3D%22M56%20444Q56%20457%2070%20464H707Q722%20456%20722%20444Q722%20430%20706%20424H72Q56%20429%2056%20444ZM56%20237T56%20250T70%20270H707Q722%20262%20722%20250T707%20230H70Q56%20237%2056%20250ZM56%2056Q56%2071%2072%2076H706Q722%2070%20722%2056Q722%2044%20707%2036H70Q56%2043%2056%2056Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMAIN-31%22%20d%3D%22M213%20578L200%20573Q186%20568%20160%20563T102%20556H83V602H102Q149%20604%20189%20617T245%20641T273%20663Q275%20666%20285%20666Q294%20666%20302%20660V361L303%2061Q310%2054%20315%2052T339%2048T401%2046H427V0H416Q395%203%20257%203Q121%203%20100%200H88V46H114Q136%2046%20152%2046T177%2047T193%2050T201%2052T207%2057T213%2061V578Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-6D%22%20d%3D%22M21%20287Q22%20293%2024%20303T36%20341T56%20388T88%20425T132%20442T175%20435T205%20417T221%20395T229%20376L231%20369Q231%20367%20232%20367L243%20378Q303%20442%20384%20442Q401%20442%20415%20440T441%20433T460%20423T475%20411T485%20398T493%20385T497%20373T500%20364T502%20357L510%20367Q573%20442%20659%20442Q713%20442%20746%20415T780%20336Q780%20285%20742%20178T704%2050Q705%2036%20709%2031T724%2026Q752%2026%20776%2056T815%20138Q818%20149%20821%20151T837%20153Q857%20153%20857%20145Q857%20144%20853%20130Q845%20101%20831%2073T785%2017T716%20-10Q669%20-10%20648%2017T627%2073Q627%2092%20663%20193T700%20345Q700%20404%20656%20404H651Q565%20404%20506%20303L499%20291L466%20157Q433%2026%20428%2016Q415%20-11%20385%20-11Q372%20-11%20364%20-4T353%208T350%2018Q350%2029%20384%20161L420%20307Q423%20322%20423%20345Q423%20404%20379%20404H374Q288%20404%20229%20303L222%20291L189%20157Q156%2026%20151%2016Q138%20-11%20108%20-11Q95%20-11%2087%20-5T76%207T74%2017Q74%2030%20112%20181Q151%20335%20151%20342Q154%20357%20154%20369Q154%20405%20129%20405Q107%20405%2092%20377T69%20316T57%20280Q55%20278%2041%20278H27Q21%20284%2021%20287Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-6F%22%20d%3D%22M201%20-11Q126%20-11%2080%2038T34%20156Q34%20221%2064%20279T146%20380Q222%20441%20301%20441Q333%20441%20341%20440Q354%20437%20367%20433T402%20417T438%20387T464%20338T476%20268Q476%20161%20390%2075T201%20-11ZM121%20120Q121%2070%20147%2048T206%2026Q250%2026%20289%2058T351%20142Q360%20163%20374%20216T388%20308Q388%20352%20370%20375Q346%20405%20306%20405Q243%20405%20195%20347Q158%20303%20140%20230T121%20120Z%22%3E%3C%2Fpath%3E%0A%3Cpath%20stroke-width%3D%221%22%20id%3D%22E1-MJMATHI-64%22%20d%3D%22M366%20683Q367%20683%20438%20688T511%20694Q523%20694%20523%20686Q523%20679%20450%20384T375%2083T374%2068Q374%2026%20402%2026Q411%2027%20422%2035Q443%2055%20463%20131Q469%20151%20473%20152Q475%20153%20483%20153H487H491Q506%20153%20506%20145Q506%20140%20503%20129Q490%2079%20473%2048T445%208T417%20-8Q409%20-10%20393%20-10Q359%20-10%20336%205T306%2036L300%2051Q299%2052%20296%2050Q294%2048%20292%2046Q233%20-10%20172%20-10Q117%20-10%2075%2030T33%20157Q33%20205%2053%20255T101%20341Q148%20398%20195%20420T280%20442Q336%20442%20364%20400Q369%20394%20369%20396Q370%20400%20396%20505T424%20616Q424%20629%20417%20632T378%20637H357Q351%20643%20351%20645T353%20664Q358%20683%20366%20683ZM352%20326Q329%20405%20277%20405Q242%20405%20210%20374T160%20293Q131%20214%20119%20129Q119%20126%20119%20118T118%20106Q118%2061%20136%2044T179%2026Q233%2026%20290%2098L298%20109L352%20326Z%22%3E%3C%2Fpath%3E%0A%3C%2Fdefs%3E%0A%3Cg%20stroke%3D%22currentColor%22%20fill%3D%22currentColor%22%20stroke-width%3D%220%22%20transform%3D%22matrix(1%200%200%20-1%200%200)%22%20aria-hidden%3D%22true%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-61%22%20x%3D%220%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3Cg%20transform%3D%22translate(529%2C412)%22%3E%0A%20%3Cuse%20transform%3D%22scale(0.707)%22%20xlink%3Ahref%3D%22%23E1-MJMATHI-3C6%22%20x%3D%220%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20transform%3D%22scale(0.707)%22%20xlink%3Ahref%3D%22%23E1-MJMAIN-28%22%20x%3D%22654%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20transform%3D%22scale(0.707)%22%20xlink%3Ahref%3D%22%23E1-MJMATHI-6E%22%20x%3D%221044%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20transform%3D%22scale(0.707)%22%20xlink%3Ahref%3D%22%23E1-MJMAIN-29%22%20x%3D%221644%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3C%2Fg%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-2261%22%20x%3D%222623%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-31%22%20x%3D%223957%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-28%22%20x%3D%224735%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-6D%22%20x%3D%225125%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-6F%22%20x%3D%226003%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-64%22%20x%3D%226489%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-6E%22%20x%3D%227290%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-29%22%20x%3D%227890%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3C%2Fg%3E%0A%3C%2Fsvg%3E#card=math&code=a%5E%7B%5Cvarphi%28n%29%7D%20%5C%3B%20%5Cequiv%20%5C%3B%201%20%5C%3B%20%28mod%20%5C%3B%20n%29&height=24&id=WIoLb)

孙子定理(中国剩余定理)

费马小定理

引理1

a,b,c,m为整数,且(m,c)=1,若数论 - 图8,则 数论 - 图9

引理2

数论 - 图10


内容

质数

大于1的整数中,只能被1和本身整除的数,称为质数

试除法判断质数

  1. bool is_prime(int x) {
  2. if ( x < 2 ) return false;
  3. for (int i = 2; i <= x / i ; i ++ ) if ( x % i == 0 ) return false; // i <= x / i 优化版 <=sqrt(x)
  4. return true;
  5. }

分解质因数

  1. void divide(int x) {
  2. for (int i = 2; i <= x / i ; i ++ ) {
  3. if ( x % i == 0 ) {
  4. int s = 0;
  5. while ( x % i == 0 ) {
  6. x = x / i ;
  7. s ++ ;
  8. }
  9. cout << i << " " << s << endl;
  10. }
  11. }
  12. // x 中最多只有一个大于sqrt(x)的质因子
  13. if ( x != 1 ) cout << x << " " << 1 << endl;
  14. cout << endl;
  15. }

筛质数

将2~n中的所有质数筛出来

朴素筛数论 - 图11

筛掉所有数的倍数

  1. const int N = 1e6 + 10;
  2. int cnt,prime[N];
  3. bool st[N];
  4. void get_primes(int n) {
  5. for (int i = 2; i <= n ; i ++ ) {
  6. if (!st[i]) prime[cnt++] = i;
  7. for (int j = i + i; j <= n; j += i) st[j] = true;
  8. }
  9. }

埃式筛数论 - 图12

筛掉所有质数的倍数

  1. const int N = 1e6 + 10;
  2. int cnt,prime[N];
  3. bool st[N];
  4. void get_primes(int n) {
  5. for (int i = 2; i <= n ; i ++ ) {
  6. if (!st[i]) {
  7. prime[cnt++] = i;
  8. for (int j = i + i ; j <= n; j += i) st[j] = true;
  9. }
  10. }
  11. }

线性筛数论 - 图13

用i的最小质因子筛去合数

  1. const int N = 1e6 + 10;
  2. int cnt,prime[N];
  3. bool st[N];
  4. void get_primes(int n) {
  5. for (int i = 2; i <= n ; i++ ) {
  6. if(!st[i]) prime[cnt ++ ] = i;
  7. for (int j = 0;prime[j] <= n / i ; j++) {
  8. st[prime[j] * i ] = true;
  9. if ( i % prime[j] == 0 ) break;
  10. }
  11. }
  12. }

约数

试除法求约数

  1. vector<int> get_divisors(int x) {
  2. vector<int> res;
  3. for (int i = 1;i <= n / i; i ++ ) {
  4. if ( n % i == 0 ) {
  5. res.push_back(i);
  6. if ( i != n / i ) res.push_back( n / i );
  7. }
  8. }
  9. sort(res.begin(),res.end());
  10. return res;
  11. }

约数个数定理

数论 - 图14
根据乘法原理
数论 - 图15

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int mod = 1e9+7;
  4. int main()
  5. {
  6. int n,x;
  7. unordered_map<int,int> hash;
  8. cin >> n;
  9. while (n--) {
  10. cin >> x;
  11. for (int i = 2;i <= x / i ; i++) {
  12. while (x%i==0) {
  13. x /= i;
  14. hash[i] ++;
  15. }
  16. }
  17. if(x > 1) hash[x]++;
  18. }
  19. long long res = 1;
  20. for (auto i:hash) {
  21. res = res * (i.second + 1) % mod;
  22. }
  23. cout << res << endl;
  24. return 0;
  25. }

约数和定理

由于约数个数定理可知
数论 - 图16

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int mod = 1e9+7;
  4. int main()
  5. {
  6. int n,x;
  7. unordered_map<int,int> hash;
  8. cin >> n;
  9. while (n--) {
  10. cin >> x;
  11. for (int i = 2;i <= x / i ; i++) {
  12. while (x%i==0) {
  13. x /= i;
  14. hash[i]++;
  15. }
  16. }
  17. if(x>1) hash[x]++;
  18. }
  19. long long res = 1;
  20. for (auto i:hash) {
  21. int a = i.first, b = i.second;
  22. long long t = 1;
  23. while (b--) t = (t*a+1) % mod;
  24. res = res * t % mod;
  25. }
  26. cout << res << endl;
  27. return 0;
  28. }

欧拉函数

对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目
数论 - 图17

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int n,a;
  6. cin >> n;
  7. while (n--) {
  8. cin >> a;
  9. int res = a;
  10. for (int i = 2; i <= a / i ; i++) {
  11. if (a%i==0) {
  12. res = res / i * (i-1);
  13. while (a%i==0) a = a/i;
  14. }
  15. }
  16. if(a>1) res = res / a * (a - 1);
  17. cout << res << endl;
  18. }
  19. return 0;
  20. }

筛法求欧拉函数

phi[pri[j] i] 分为两种情况
phi[pri[j]
i] = phi[i] pri[j];
phi[pri[j]
i] = phi[i] * (pri[j]-1);

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 1e6 + 10;
  4. int pri[N],phi[N],cnt;
  5. bool st[N];
  6. long long get_euler(int n) {
  7. phi[1] = 1;
  8. for (int i = 2; i <= n;i ++) {
  9. if(!st[i]) {
  10. pri[cnt++] = i;
  11. phi[i] = i - 1; // 质数i的欧拉函数为i-1,因为1~i-1都与i互质,共i-1个
  12. }
  13. for (int j = 0;pri[j] <= n/i;j++) {
  14. st[pri[j] * i] = true;
  15. if (i % pri[j] == 0) {
  16. phi[pri[j] * i] = phi[i] * pri[j];
  17. break;
  18. }
  19. phi[pri[j] * i] = phi[i] * (pri[j]-1);
  20. }
  21. }
  22. long long res = 0;
  23. for (int i = 1;i<=n;i++) res+=phi[i];
  24. return res;
  25. }
  26. int main()
  27. {
  28. int n;
  29. cin >> n;
  30. cout << get_euler(n) << endl;
  31. return 0;
  32. }

快速幂

快速幂

数论 - 图18

  1. long long qm(int a,int k) {
  2. long long res = 1;
  3. while ( k ) {
  4. if ( k & 1 ) res *= a;
  5. k >>= 1;
  6. a *= a;
  7. }
  8. return res;
  9. }

模意义下取幂

数论 - 图19

  1. int qmi(int a,int k,int p) {
  2. int res = 1;
  3. while (k) {
  4. if (k & 1) res = (ll) res * a % p;
  5. k >>= 1;
  6. a = (ll) a * a % p;
  7. }
  8. return res;
  9. }

快速幂求逆元

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int qmi(int a,int k,int p) {
  4. int res = 1;
  5. while (k) {
  6. if (k&1) res = (long long) res * a % p;
  7. k >>= 1;
  8. a = (long long) a * a % p;
  9. }
  10. return res;
  11. }
  12. int main()
  13. {
  14. int n,a,p;
  15. cin >> n;
  16. while (n--) {
  17. cin >> a >> p;
  18. int ans = qmi(a,p-2,p);
  19. if (a%p) cout << ans << endl;
  20. else cout << "impossible" << endl;
  21. }
  22. return 0;
  23. }

欧几里得

最大公约数

  1. int gcd(int a,int b) {
  2. return b ? gcd(b,a%b) : a;
  3. }

扩展欧几里得

求得数论 - 图20

  1. int exgcd(int a,int b,int &x,int &y) {
  2. if (!b) {
  3. x = 1, y = 0;
  4. return a;
  5. }
  6. int r = exgcd(b,a%b,y,x);
  7. y -= a / b * x;
  8. return r;
  9. }

高斯消元

  • 遍历每一列c
  • 找出当前列中绝对值最大的行
  • 把最大行换到上面
  • 把该行第一个数变为1(其他数字跟着改变)
  • 将下面所有行的当前列都变为0

组合数

从a个不同元素中取出b个元素的所有组合的个数,叫做从a个不同元素中取出b个元素的组合数,记作 数论 - 图21

递归法求组合数

数论 - 图22根据加法计数原理(当询问次数多,数据小时使用)

  1. void init()
  2. {
  3. for (int i = 0;i<N;i++) {
  4. for (int j = 0;j<=i;j++) {
  5. if(!j) c[i][j] = 1;
  6. else c[i][j] = (c[i-1][j-1] + c[i-1][j]) % mod;
  7. }
  8. }
  9. }

预处理逆元求组合数

数论 - 图23
除法用乘以逆元代替,使用快速幂求出逆元

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int N = 100010,mod = 1e9 + 7;
  5. int fact[N],infact[N];
  6. int qmi(int a,int k,int p) {
  7. int res = 1;
  8. while (k) {
  9. if (k&1) res = (ll) res * a % p;
  10. k >>= 1;
  11. a = (ll) a * a % p;
  12. }
  13. return res;
  14. }
  15. int main()
  16. {
  17. int n,a,b;
  18. cin >> n;
  19. fact[0] = infact[0] = 1;
  20. for (int i = 1;i<=N;i++) {
  21. fact[i] = (ll)fact[i-1] * i % mod;
  22. infact[i] = (ll) infact[i-1] * qmi(i,mod-2,mod) % mod;
  23. }
  24. while (n--) {
  25. cin >> a >> b;
  26. cout << (ll) fact[a] * infact[b] % mod * infact[a-b] % mod << endl;
  27. }
  28. return 0;
  29. }

卢卡斯定理求组合数

数论 - 图24

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. int qmi(int a,int k,int p) {
  5. int res = 1;
  6. while (k) {
  7. if (k&1) res = (LL) res * a % p;
  8. k >>= 1;
  9. a = (LL) a * a % p;
  10. }
  11. return res;
  12. }
  13. int C(int a,int b,int p) {
  14. int res = 1;
  15. for (int i = 1,j = a;i<=b;i++,j--) {
  16. res = (LL) res * j % p;
  17. res = (LL) res * qmi(i,p-2,p) % p;
  18. }
  19. return res;
  20. }
  21. int lucas(LL a,LL b,int p) {
  22. if (a<p and b<p) return C(a,b,p);
  23. return (LL) C(a%p,b%p,p) * lucas(a/p,b/p,p) % p;
  24. }
  25. int main()
  26. {
  27. int n,p;
  28. LL a,b;
  29. cin >> n;
  30. while (n--) {
  31. cin >> a >> b >> p;
  32. cout << lucas(a,b,p) << endl;
  33. }
  34. return 0;
  35. }

分解质因数法求组合数

当我们需要求出组合数的真实值,而非对某个数的余数时,分解质因数的方式比较好用:

  1. 筛法求出范围内的所有质数
  2. 通过 C(a, b) = a! / b! / (a - b)! 这个公式求出每个质因子的次数。 n! 中p的次数是 n / p + n / p^2 + n / p^3 + …
  3. 用高精度乘法将所有质因子相乘
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. const int N = 5010;
  5. int primes[N], cnt, sum[N];
  6. bool st[N];
  7. void get_primes(int n) {
  8. for (int i = 2; i <= n; i++) {
  9. if (!st[i]) primes[cnt++] = i;
  10. for (int j = 0; primes[j] <= n / i; j++) {
  11. st[primes[j] * i] = true;
  12. if (i % primes[j] == 0) break;
  13. }
  14. }
  15. }
  16. int get(int a, int p) {
  17. int res = 0;
  18. while (a) {
  19. res += a / p;
  20. a /= p;
  21. }
  22. return res;
  23. }
  24. vector<int> mul(vector<int> &a, int k) {
  25. vector<int> res;
  26. int t = 0;
  27. for (int i = 0; i < a.size(); i++) {
  28. t += a[i] * k;
  29. res.push_back(t % 10);
  30. t /= 10;
  31. }
  32. while (t) {
  33. res.push_back(t % 10);
  34. t /= 10;
  35. }
  36. return res;
  37. }
  38. int main() {
  39. int a, b;
  40. cin >> a >> b;
  41. get_primes(a);
  42. for (int i = 0; i < cnt; i++) {
  43. int p = primes[i];
  44. sum[i] = get(a, p) - get(a - b, p) - get(b, p);
  45. }
  46. vector<int> res = {1};
  47. for (int i = 0; i < cnt; i++) {
  48. for (int j = 0; j < sum[i]; j++) {
  49. res = mul(res, primes[i]);
  50. }
  51. }
  52. for (int i = res.size() - 1; i >= 0; i--) cout << res[i];
  53. cout << endl;
  54. return 0;
  55. }

卡特兰数

给定n个0和n个1,它们按照某种顺序排成长度为2n的序列,满足任意前缀中0的个数都不少于1的个数的序列的数量为: 数论 - 图25

  1. #include <iostream>
  2. using namespace std;
  3. typedef long long LL;
  4. const int mod = 1e9 + 7;
  5. int qmi(int a, int k, int p) {
  6. int res = 1;
  7. while (k) {
  8. if (k & 1) res = (LL) res * a % p;
  9. a = (LL) a * a % p;
  10. k >>= 1;
  11. }
  12. return res;
  13. }
  14. int main() {
  15. int n;
  16. cin >> n;
  17. int a = 2 * n, b = n;
  18. int res = 1;
  19. for (int i = a; i > b; i--) res = (LL) res * i % mod;
  20. for (int i = 1; i <= b; i++) res = (LL) res * qmi(i, mod - 2, mod) % mod;
  21. res = (LL) res * qmi(n + 1, mod - 2, mod) % mod;
  22. cout << res << endl;
  23. return 0;
  24. }

容斥原理

数论 - 图26
奇加偶减


Nim游戏(博弈论)

Mex运算
设S表示一个非负整数集合。定义mex(S)为求出不属于集合S的最小非负整数的运算,即:
mex(S) = min{x}, x属于自然数,且x不属于S
SG函数
SG(x) = mex({SG(y1), SG(y2), …, SG(yk)})
SG(G) = SG(G1) ^ SG(G2) ^ … ^ SG(Gm)

简单Nim游戏

把所有堆石子数异或,非0先手必胜,反之必败
先手把异或出来的石子数拿去后,剩下石子位位相对,只要每次取与对手相同的石子数,对手必先碰到石子数为0的情况

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int n,x;
  6. cin >> n;
  7. int res = 0;
  8. while (n--) {
  9. cin >> x;
  10. res ^= x;
  11. }
  12. if (res) cout << "Yes" << endl;
  13. else cout << "No" << endl;
  14. return 0;
  15. }

台阶Nim游戏

每一层取走是放在下一层的,第0层是不能操作的,所以当某个人只能操作第0层时就输了。
那先手玩家只需要管奇数层即可,同简单Nim游戏

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int n,x;
  6. int res = 0;
  7. cin >> n;
  8. for (int i = 1;i<=n;i++) {
  9. cin >> x;
  10. if (i%2) res ^= x;
  11. }
  12. if (res) cout << "Yes" << endl;
  13. else cout << "No" << endl;
  14. return 0;
  15. }

集合Nim游戏

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 110, M = 10010;
  4. int s[N],f[M],n,m;
  5. int sg(int x) {
  6. if(f[x]!=-1) return f[x];
  7. unordered_set<int> S;
  8. for (int i = 0;i<n;i++) {
  9. if (x>=s[i]) S.insert(sg(x-s[i]));
  10. }
  11. for (int i = 0;;i++) {
  12. if (!S.count(i)) return f[x] = i;
  13. }
  14. }
  15. int main()
  16. {
  17. cin >> n;
  18. for (int i = 0;i<n;i++) cin >> s[i];
  19. cin >> m;
  20. int res = 0;
  21. memset(f,-1,sizeof f);
  22. for (int i = 0;i<m;i++) {
  23. int x;
  24. cin >> x;
  25. res ^= sg(x);
  26. }
  27. if (res) cout << "Yes" << endl;
  28. else cout << "No" << endl;
  29. return 0;
  30. }

拆分Nim游戏

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 110;
  4. int f[N],n;
  5. int sg(int x) {
  6. if (f[x]!=-1) return f[x];
  7. unordered_set<int> S;
  8. for (int i = 0;i<x;i++) {
  9. for (int j = 0;j<=i;j++) {
  10. S.insert(sg(i) ^ sg(j));
  11. }
  12. }
  13. for (int i = 0;;i++) {
  14. if(!S.count(i)) return f[x] = i;
  15. }
  16. }
  17. int main()
  18. {
  19. cin >> n;
  20. memset(f,-1,sizeof f);
  21. int res = 0;
  22. for (int i = 0;i<n;i++) {
  23. int x;
  24. cin >> x;
  25. res ^= sg(x);
  26. }
  27. if (res) cout << "Yes" << endl;
  28. else cout << "No" << endl;
  29. return 0;
  30. }