Pääsiäismuna Pythonissa – The Zen of Python

Kun Python-kielellä suorittaa ohjelmarivin ”import this” –, niin Python palauttaa Tom Petersin manifestin The Zen of Python. Vaikka olen jo muutaman vuoden leikkinyt Python-kielellä, niin enpä ole tätä aiemmin huomannut.

Kokeilin tätä useammalla kääntäjällä. Aina toimii. Varmaan useimmille pythonisteille on tuttu ”import antigravity”.

Kiva tekijäongelma

[13.1. edit. korjasin virheen tehtäväanannossa]

Törmäsin Twitterissä mielenkiintoiseen lukujen tekijöiden suhteellisiin osuuksiin liittyvään ongelmaan. Esitän tässä likimääräisen ratkaisun Pythonilla, käytän Googlen Colab-ympäristöä, samalla testaan, miten koodin julkinen jako onnistuu Colabin avulla.

kolmosten keskiarvo

Käytän ongelman määrittelyssä James Tantonin Twitterviestissään käyttämää merkintätapaa.

Olkoon N>0 luonnollinen luku ja p(N) funktio, joka kertoo kuinka monta kolmosta on luvun N alkutekijöissä. Esimerkiksi 100 = 2^2 * 5^2, niinpä p(100) = 0 ja p(450) = 3, sillä 450 = 2 * 3^2 * 5^2. Kuinka suuri on p(N):n keskiarvo suurilla N:n arvoilla?

Jos merkitään 

niin f(1) = 0, f(2) = 0, f(3) = ⅓, f(4) = ¼, f(5) = ⅕, f(6) = ⅓, …f(9) = 4/9

Kuinka suuri f(N):n raja-arvo on kun N lähestyy ääretöntä? Tietysti asia vaatii todistuksen.

Tein Pythonilla pienen ohjelman, joka laskee keskiarvon arvoja ja piirtää niiden kuvaajan. Ohjelma toimii Googlen Colabissa oheisen linkin takana https://colab.research.google.com/drive/1ZU4BuevQA47GHW4APXLZ0gEqw_Fcg4Nf?usp=sharing

Jotta voit suorittaa ohjelman osia, sinun täytyy kirjautua Googlen tunnuksilla. Muuta muuttujan n arvoa, niin saat käsityksen raja-arvon suuruudesta.

muiden lukujen keskiarvo

Kun olet oivaltanut mikä on f-funktion raja-arvo kun N lähestyy ääretöntä, niin pystynet päättelemään raja-arvot muilla tekijöillä. Eli jos tutkitaan kakkosten, nelosten, viitosten, kuutosten, seiskojen jne. keskiarvojen raja-arvoa.