John(筋肉)の備忘録的な何か

備忘録的な何かであり、進捗そのものでもあるよ!!怖い人は見ないで!

あまりにも書くことがないのでメルセンヌ素数から完全数をいくつか計算してみた。

はじめに

はてなブログで書かれた記事ではありますが、 学生LT Advent Calendar 2018 - Qiita の14日(遅刻)の記事です。他の方のもみてください。

あと何気に初アドベントカレンダー。(初遅刻)

そんでもって内容が学生LTあんまり関係ないけど許してもらおう。

今回の内容

全てはある記事を投稿した時のコメントからです。

john-bardera.hatenablog.com

この記事をfacebookに共有したところ、他高専の怖い人から「次は完全数でやってみませんか?」とお話がありました。

数学ガチで何もできないマンだったので、「できないよぉ。。ふえぇ。。」とか思ってたんですが、メルセンヌ素数からみつけるやつなら、自分でアルゴリズム考えるわけでもないし出来るわ。ということで書かせていただきました。必殺コピペ記事~~~~あと書くネタがなかった

用語説明

今回の記事では、メルセンヌ数メルセンヌ素数完全数という言葉が出てきます。

自分で調べてください。

注意点

メルセンヌ素数から求められる完全数のみいくつかあげてるので、完全な(?)完全数ではないのですまん。

そうこう言ってる間もプログラムの実行が終わらないんだけど。えっどうしよ。あっあっあっあっ。

とりあえず処理が終わってるやつだけでも記事に書くか。

いざ本題、メルセンヌ素数を用いて導いた完全数たち

3: 28

4: 496

5: 8128

6: 33550336

7: 8589869056

8: 137438691328

9: 2305843008139952128

10: 2658455991569831744654692615953842176

11: 191561942608236107294793378084303638130997321548169216

12: 13164036458569648337239753460458722910223472318386943117783728128

13: 14474011154664524427946373126085988481573677491474835889066354349131199152128

14: 23562723457267347065789548996709904988477547858392600710143027597506337283178622239730365539602600561360255566462503270175052892578043215543382498428777152427010394496918664028644534128033831439790236838624033171435922356643219703101720713163527487298747400647801939587165936401087419375649057918549492160555646976

15: 141053783706712069063207958086063189881486743514715667838838675999954867742652380114104193329037690251561950568709829327164087724366370087116731268159313652487450652439805877296207297446723295166658228846926807786652870188920867879451478364569313922060370695064736073572378695176473055266826253284886383715072974324463835300053138429460296575143368065570759537328128

16: 54162526284365847412654465374391316140856490539031695784603920818387206994158534859198999921056719921919057390080263646159280013827605439746262788903057303445505827028395139475207769044924431494861729435113126280837904930462740681717960465867348720992572190569465545299629919823431031092624244463547789635441481391719816441605586788092147886677321398756661624714551726964302217554281784254817319611951659855553573937788923405146222324506715979193757372820860878214322052227584537552897476256179395176624426314480313446935085203657584798247536021172880403783048602873621259313789994900336673941503747224966984028240806042108690077670395259231894666273615212775603535764707952250173858305171028603021234896647851363949928904973292145107505979911456221519899345764984291328

17: 1089258355057829337698225273522048981957108454302608067318906618508470155298616996291940961858901379546182685531220055762780759342407499066046704182083087124626926378164410931450968826355205573671671624202686633360807123109470452668371537599662797484934359039779954213666598820299501366380164619080260403235229556730554163992303009752651350320619930563673695280153023049498468696618144072021372831425963701460505606378119245841386552600145384072983309717141950085498085709671387054868320477972299055273914798446936214147860706887052107312380067072602317009422809314774791894700769891009818743169303028154303290071199392984292940283852217800166629229157110264080599294016452483028528153331119523441423159614934140265550242360007858215936798489500727196347516386044241721984706558329364277995903102292034620628080752342422906401283027034649671445569324281946859622177566643375489715678451311792675935981010355562887971948569016060035334607879359770371846507659970601616998311983878150420763306289490886429900481786499537645379839365212725494441511932772182768149943659849007457246983861558265144823191367758350341527780770221556945275566504831636564856831502556078058133043400055653540413313266034639355202834006126905491569560542489551023207382276137352665717018261519604817417112576526410535323991500058749996247580834453782528

18: 99497054337086473442435202604522816989643863571126408511774020575773849326355529178686629498151336416502516645641699516813140394897940636561646545947753232301453603583223268085613647233768081645727669037394385696522820301535888041815559513408036145123870584325525813950487109647770743827362571822870567643040184723115825645590386313377067112638149253171843914780065137373446222406322953569124771480101363180966448099882292453452395428270875732536311539266115116490704940164192417744919250000894727407937229829300578253427884494358459949535231819781361449649779252948099909821642207485514805768288115583409148969875790523961878753124972681179944234641016960011815788847436610192704551637034472552319820336532014561412028820492176940418377074274389149924303484945446105121267538061583299291707972378807395016030765440655601759109370564522647989156121804273012266011783451102230081380401951383582987149578229940818181514046314819313206321375973336785023565443101305633127610230549588655605951332351485641757542611227108073263889434409595976835137412187025349639504404061654653755349162680629290551644153382760681862294677414989047491922795707210920437811136712794483496437355980833463329592838140157803182055197821702739206310971006260383262542900044072533196137796552746439051760940430082375641150129817960183028081010978780902441733680977714813543438752546136375675139915776

19: 33570832131986724437010877211080384841138028499879725454996241573482158450444042882048778809437690388449535774260849885573694759906173841157438424730130807047623655942236174850509108537827658590642325482494761473196579074656099918600764404702181660294469121778737965822199901663478093006075022359223201849985636144177185925402078185073015045097727084859464743635537781500284915880244886306461785982956072060013474955617851481680185988557136609224841817877083608951191123174885226416130683197710667392351007374503755403352531476227943590071651702697594241031955529898971218001214641774673134944471562560957179657881556419122102935450299751813340515170956167951095453649485576150660101689160658011770193274226308280507786835049549112576654510119670456745939890194205255175384484489909328967646988163155982471564998196261632751283127879509198074253193409580454562488664383465379885002735506153988851506645137759275553988219425439764732399824712438125054117523837438256744437055019441051006489972341609117978404563794992004873057518455748701444951238377139620494287982489529827233140637014837408856156199515457669607964052126908149265601786094447595560440059050091763547114092255371397425807867554352112542194784815494784276201170845949274674632985210421075531784918358926690395463649721452265405713484388043911634485432358638806645313826206591131266232422007835577345584225720310518698143376736219283021119287617896146885584860065048876315701088796219593640826311622273328035603309475642390804499460156797855361018246696101253922254567240908315385468240931846166962495983407607141601251889544407008815874744654769507268678051757746956891212485456261121386667407711139619071530923355823178662705374393035049022603882479742334799407130280148769298597743778193050348749740786928096033906295910199238181338557856978191860647256209708168229116156300978059197026855726877649767072684960463452763160384093838292277544911857859658328888332628525056

20: 18201749040140430273835167914751015293362889506937596103357359437740048438463485836303232258902400875568993809975036246337556768238366233707757573415903278080066115951092522543145952013119010340408099881835975590975835499003463227280543140756802691525621894771543951403656868707748606069885095036335283528581813088651653833089052785834280723280067200484903706704970113521040604064538274154252165373175595605248628998615687866235395077520314640188634353318831397392517095413127961059169783805545093120277974213161792712750189234973622853507624924636687588461310469170436099238232492598937308477793932361698480685664770932715430491007662682405163044765107996164343261202355969912750334459238591875176292279879181327972920090211444842306766331109269166235125509668704478958734853068636529397153443016761158813447481567868262367893981171020212189792514086148090215189947704212407282687964267041783873543080261582448824858431838554183153705837057341487700727731550997896239330477471263230726484877117521254868468174015562068490713644719481693089433418532636835808942200716440819313366362403191355576523173825131875335647759016207232990842875902548737480801898289658229210850221695663421649611729577245208490877897945867171915873804061345544603919338281884397538634259920738193259330950837923823615411304543599290641330796754637229721314074245135865275394292301532835414540035740253567232435673868968242806554916467387945199026147468808031055150281915733287931898181708779241724409277593094799901224641825850183281480975988801751016901958988814849430087926938683408662084176896164178170688871544229415824450055526787148715365214142372692896788902761679810950828268208180845309986581369910322372338718437892376924042425319226250711104694125177110946650435829229609212441927473293781744486775943173110295432226780186422343937384580708855852269417012387614583884866613236875101300845603785945237925447338784922452682337026775686191693583794243538309813874806083439394116832472101884074936138517168612519077402832074575032255369216417037979614393919019507244388546924316787128440250098924928769352393698587810869831127888084696751795845351130410199628821737636610886633120714458623846784948362409208330416268144841565505869827619451490634144640754203543507421045031995754480556197763855213987476437990952173006055503017305481394836591954388794314558786433824434673257753459825605748638411145315395326160048592155490496363095590187403880545069860151237473584639382355987779291886392614452838326884468500853448420623482240841078202705004101172745586672975106848437133377536

21: 40767271711094423266286789500920409509472451956754173657558947684464681715260993357605734441071512726995067528227747339481802307406017975918463751821848507118336173625166416441051751909733833921511752076653991689253045435925355114303300112240094312492366309429025181937703076074631694330891971804062290637324463063370007444165676699382865548574698013900725344417715580901794517787294713626725247616431165717354475083506329812661542345174259067891050196093969424325393268526237129649381671501429508518532700654319135658688537822432173525578067619513381189044904675194018182193349875318307576479629202619084300084497552929130566459016664436323063518973396208264181441158994259766077215199598273505770807393645474832736784296681037040447804670653738245607704296033370069548245058222346937754342008266115596746009270472531585662215058309416971412450120373149200391305139626391147758497714062124945414219545021663761325651848979096956363445054874071200187004098334242171313866643279783121709224161095222080608666106221075196556669546036212033916214620015754946773858930331944632744676736422424630471770419404321630175578272380575860947613876452571102541656491464344575071152521057073596731123384560986412117728286743021819378916115542964437048959026512685144124956065485652281953670546881779736097894174076453897164963235414848542178185638376039787558515854327876892100291586150169593481653250617283841617035992495539326209286081463451168016943400175227907739209129141984002670216279803245614932227988255785347373220924269748847852670574748163344676257876208108900678912830541369572996543783984620215364954353893838464888672671453393130927672103268849597298792373028395452767031129100333696063046099180328138782391367566104347713165495897021159454503241952055937183814515589264894586591501363147676413662843302502175075791426238440513015405476007476498747783201892106205584698383524005031036187539925202274453467202350823213372999023061199920256689198899908817944610695281886646630824678765305845231339408011870948795735488385897157930791657525540518959449984465130248721166519809265271872913736358591494923276213116461018047328995621925367809697847697726183327599265650527446129800629718921404375627930737500435684546352140119118622625161732119556975036023320412126344181833754571377867747583783758174317957011000027824913530257131124993626863404596480086028834672069335493603141485087204213357254720762673897857837928958409382883536405344396217119883289266162616394049286804626796372654015917535645430198053751867174961912991147525380624081763689015391680510756697550659469557112900507657356152843089480485079285160832736274980123243426924630558985552020642912534528

まとめ

最近、まともな記事かけてないし、精進したいと思う。

あと、調べてみると結構楽しそうだったので、また完全数列挙挑戦してみたいと思うよ。

あ、ソースコード貼るの忘れてたわ。

def Lucas_Lehmer(p):
    s = 4
    M = (1 << p) - 1
    for n in range(2, p):
        s = (s ** 2 - 2) % M
    return s == 0

if __name__ == "__main__":
    i = 3
    for p in range(3, 10000, 2):
        if Lucas_Lehmer(p):
            print(f"{i}: {2 ** (p - 1) * ((1 << p) - 1)}\n")
            i += 1

お次は @sudokzt さんで、「Tinderの上位互換について紹介するよん」です!

間に合わなくてすまん。。

え、まだ実行終わらない。

ちょっと数多くしすぎちゃった❤️

今止めました。

20分くらい回してこれ。もっと何か早いの調べて考えて書くぞ!!