Fremragende antal

Fremragende antal

Vladimir Ilyin
"Quantic" №1, 2014

– Og vi på datalogi flyttede til et nyt niveau! Begyndte at lære python! – Den ottende-graders Vovka sagde vigtigst, kun den, der kom fra skolen.

– Reptiler studerer i zoologi! – svarede Andrei, Vova's yngre bror, at have brudt sig fra et computerspil.

– Du er selv et krybdyr! – Vovka smilede. – Python er et programmeringssprog, og det hedder det ikke til ære for slangen, men til ære for tv-showet "Monty Python". Det er dog skrevet på samme måde som en slange.

– Nå, hvad er så specielt med din Python?

"Jeg ved det endnu ikke," indrømmede Vovka ærligt. – Vi har lige startet det. De lærte at installere og lært at der er en lang aritmetik i den, og der er ikke meget forskel på strenge og tal!

– Hvordan er det? – spurgte Andrei. Det han hørte var ikke meget inspireret. For at fortælle sandheden, kunne han ikke lide regning, alle har en mundtlig konto. Og så er der den "lange" …

– Nå, se. Din lommeregner har kun 10 cifre. Det betyder at du kun kan arbejde med ti cifrede tal. Og Python kan beregne mindst et hundrede, endda en million, men mindst en milliard sextillion figurer! – Som mange børn troede Vovka på computerernes allermægt.

– Nu vil jeg vise, lad os installere det.1 Og mens det bliver etableret, tænker vi på, hvad der ville være for os af en sådan … længe at tælle.

– Åh her! Nyligt læst i "Underholdende aritmetik". Shah af et østland lovede opfinderen af ​​skak enhver belønning. Han bad om at hælde riskorn på hver celle af brættet. På den første celle er der et korn på den anden – to, på den tredje – fire … og så videre, hver gang 2 gange mere. Shah var glad for, at anmodningen, som det syntes for ham, er så ubetydelig, og straks beordrede alt at blive givet ud. Grådighed svigtede Shah! Bogen viser at det samlede beløb er 264 – 1 korn, og det er meget. Lad os beregne, hvor længe det ville tage vizier at måle risen præcist, selvom de havde så mange korn.

– Vi starter2– Fortsat Vovka, som allerede har etableret alt – kan overvejes!

Andrew blev lidt overrasket over det, han så. I stedet for de sædvanlige ikoner og knapper i det sorte vindue blev der skrevet noget på engelsk og blot blinket markøren.

– Nå her. Vi kan indtaste kommandoer her, – forklarede Vovka. – Lad os sige

>>> 2+2

tryk på Enter og … voila:

4

Vovka så på Andrei med et triumferende udseende, som om han havde gjort noget meget vigtigt og usædvanligt.

– Og hvordan man kan formere graden til at skrive? – spurgte Andrei.

– Meget simpelt – se! Plus som +, minus som – multiplikation – med en asterisk * (Skift 8), grader med to stjerner (**), division – med en fremad skråstreg (/). Det er muligt at opdele helt (//).For eksempel er 29/10 to point ni, og 29 // 10 er nøjagtigt 2. Og tag resten af ​​divisionen (%). Vi gør det …

>>> 2**64 – 1

– indtastede Vovk og trykket Enter, – 18446744073709551615 korn!

– Meget! – sagde Andrey. – Antag at de betragtes som ti gange og hver tællede 100 korn pr. Sekund … I et minut, 60 sekunder, om en time, 60 minutter … i et årtusind, 1000 år … Udført. Lad os ikke tage andelen af ​​årtusinder, vi deler det helt. Og Andrew scorede:

>>> 2**64-1//100*60*60*24*365*1000

18446744073709551616

– En slags nonsens!

"Selvfølgelig," sagde Vova, "som i matematik er det muligt og nødvendigt at sætte parenteser i Python.

>>> (2**64-1)//(100*60*60*24*365*1000)

Computeren svarede:

5849424

– Fem millioner otte hundrede niogfyrre tusind fire hundrede fireogtyve tusinde år og lidt mere. Opfinderen af ​​skak opfandt sandsynligvis udødelighedens eliksir, hvis han skulle vente så meget! – grin Andrei.

– Lyt! På cirklen kom vi op med et meget flot tal: 550 – dette er et arbejde på halvtreds fem, og Möbius – den såkaldte computervidenskabslærer – gav os opgaven:

Bevis at der er et tal uden nuller, som er deleligt af før-fremragende.

Den nemmeste måde at bevise, at der findes noget, er bare at finde det! Næste, Python!

>>> 5**50

88817841970012523233890533447265625

I første omgang var Andrei meget glad, for han var den første af hele klassen, som formåede at se det før-fremragende nummer "live". Men glæden var kortvarig. I den mest fremragende viste det sig at være tre nuller …

– Intet, lad os fortsætte! – sagde Andrew og begyndte at formere den fremragende med to, syv … Intet hjalp, lige kvadrering. Overalt var der nuler …

"Vi kan forsøge at drive nullerne fra det fremragende," foreslog Vovka. Lad os sige 1023. Multiplicer med 101 – nul vil forsvinde eller i det mindste bevæge sig til venstre: 1023 • 101 = 102300 + 1023 = 103323.

Nu kan det multipliceres med 10001 (eller 1023 straks ved 10101, det er det samme).

– Åh, har det! – sagde Andrew og hurtigt multipliceret 550 med 1000000000001:

88817841970101341075860545970499515533447265625

Den sidste nul "flyttes" til det 19. sted til højre.

– Lad os prøve at formere med 1000001000000000001 …

Nummeret blev meget længere, men nul flyttede til venstre – til 26. stilling. Så den 32., den 49. Multiplikationen af ​​den fremragende ved 10000000000000000100000100 00001000001000000000001 "skiftede" den sidste nul til 63. plads til højre. Men der var stadig et par nuller tilbage af ham! Andrey er træt.

– Og hvad hvis nuler aldrig bliver "kørt ud"? spurgte han.

Spørgsmål Vovka stumped. Faktisk, selv med eksemplet 1023, med sådanne multiplikationer, vil nul altid forblive! Gutterne deprimerede. Men så indgik far.

"Hvilke tegn på delbarhed kender du?" – far spurgte

– På 2, 3, 4, 5, 9, 10 … Hvad har det at gøre med det?

– ved 4 – det er godt! Og klokken 8?

– De tre sidste cifre skal deles med 8. Dette er elementært, fordi hvis du "folder" dem, vil der være et tal, der slutter i tre nuller, og tusind vil være deleligt med 8.

– Fantastisk, men fantastisk?

"Vi gjorde det ikke," sagde Andrei, fornærmet, mistanke om, at far bare lavede sjov.

– … Måske hvis de sidste 50 cifre i et tal er opdelt i før-fremragende, så er nummeret selv opdelt! Så hvad? – Vova troede.

– Og det er hvad! – han fortsatte lykkeligt. – Nul er nu på 63. position. Tag de sidste 50 cifre i nummeret – det vil være svaret!

"Tæl dig selv ud," snappede Andrei, som stadig var frustreret.

– Og her vil jeg ikke! Python – magt! Bare find resten af ​​at dele vores monster ind i et med halvtreds nul. Linjer i Python er skrevet i citater. De kan også tilføjes og endda gange, mens de "limes sammen". Se, – Vova har skrevet:

>>> “Vovka-godt færdig!” *100

Et andet hundrede påskrifter optrådte på skærmen "Vovka-godt færdig!“.

– "Saml" vores nummer:

>>> int ("1" + "0" * 50)

Her int at udføre aritmetiske operationer med en streng som med et tal. Du kan selvfølgelig bare skrive 10 ** 50, men det er mere interessant med strenge! Tilbage – funktion str. Det oversætter nummeret til en streng. Dette er sådan, at du kan handle med et tal som med en streng. For eksempel:

>>> len (str (5 ** 50))

35

– Len-funktionen søger efter længden af ​​en streng. Så i din førsteklasses – 35 tegn! Tæl! – Vova sneg sig.

På denne måde

>>> 5 ** 50 * 1000000000000000010000010000001000001000000000001% int ("1" + "0" * 50)

– Nå, det er svaret:

75394925527871325954265557811595499515533447265625

"Vi skal tjekke," sagde Andrei, som på dette tidspunkt havde roet lidt.

>>> 75394925527871325954265557811595499515533447265625 % (5**50)

0

– Præcis! Saldoen er nul, det betyder delelig! Og ingen nuller!

"Og her er i øvrigt valgfrit," bemærkede Vovk. – Fordi i Python, som i matematik, – hvis uden parentes, så først en grad (**), så multiplikation og division (*, /, //), og derefter tilsætning og subtraktion.

Andrew bragte nummeret til printeren – så bliver Mobius overrasket!

"Lange" opgaver

1. Professor Burik mener ikke, at antallet af mulige forskellige stater i Rubik's Cube er 43.252.003.274.489 856.000. Den 1. januar 2014 lancerede han sin computer for at kontrollere, hvilken kontrol en milliard stater pr. Hvornår burde Burik være hjemme for at se resultatet?

2. Bevis tegn på delbarhed på den fremragende.

3. Hvor mange blandt de første tusind grader af to, der regner med den første, starter med en?

Tip: bestemmelse af længden af ​​strengen, len og str-funktionerne.

Kunstner Artyom Kostyukevich


1 På webstedet python.org i Download-sektionen (link til venstre), download installationsprogrammet (til Windows – øverst på Python Windows x86 MSI Installer-siden) og installer.
2 Start – Alle programmer – Python 3.3 – Python (kommandolinje).


Like this post? Please share to your friends:
Skriv et svar

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: