Pro druhou úlohu se vám bude hodit následující funkce na hledání prvočísel. Jako parametr bere jedno číslo a vrací seznam všech prvočísel menších než to číslo. Je na vás, jestli a jak ji použijete. Nemusíte ji chápat, ačkoliv je to určitě ve vašich silách.
def prvocisla(n): vysledek = list() for cislo in range(2, n): je_prvocislo = True for delitel in range(2, cislo): if cislo % delitel == 0: je_prvocislo = False break if je_prvocislo: vysledek.append(cislo) return vysledek
Spočítejte, kolik je pětek v desítkovém zápisu čísla 7777
.
pocet = 0 for znak in str(7**777): if znak == '5': pocet += 1 print(pocet) # nebo sum(znak == '5' for znak in str(7**777))
Najděte dvě prvočísla, mezi kterými je rozdíl 202
. Můžete přitom použít výše napsanou funkci prvocisla(n)
, která vám vrátí seznam všech prvočísel menších než n
.
seznam = prvocisla(300) for i in seznam: for j in seznam: if i - j == 202: print(i, j) # taky to jde na jeden řádek, ale tohle jsme neprobírali [(i, j) for i in seznam for j in seznam if i - j == 202]
Mimochodem, kdybychom hledali dvě po sobě jdoucí prvočísla, nejmenší taková jsou 107534587 a 107534789.
Spočítejte, kolik je v textu slov dlouhých přesně čtyři písmena (ani delší, ani kratší). Text stáhněte (znovu) zde; tentokrát v něm není interpunkce, takže není co řešit.
Řešení.f = open("test18-mp.txt", encoding="utf-8") text = f.read() pocet = 0 for slovo in text.split(): if len(slovo) == 4: pocet += 1 print(pocet) # taky to jde na jeden řádek, ale už je to tak dlouhé, že by se to dělat asi nemělo sum(len(slovo) == 4 for slovo in open("test18-mp.txt", encoding="utf-8").read().split())
Spočítejte, kolik je sedmiček v desítkovém zápisu čísla 8888
.
pocet = 0 for znak in str(8**888): if znak == '7': pocet += 1 print(pocet)
Najděte dvě prvočísla, mezi kterými je rozdíl 532
. Můžete přitom použít výše napsanou funkci prvocisla(n)
, která vám vrátí seznam všech prvočísel menších než n
.
Řešení je stejné jako u skupiny A, jen změníte jedno číslo.
Spočítejte, kolik je v textu slov, která neobsahují písmeno a
(za slovo se počítá cokoliv oddělené mezerami nebo koncem řádku, takže i třeba čísla). Text stáhněte (znovu) zde; tentokrát v něm není interpunkce, takže není co řešit.
f = open("test18-mp.txt", encoding="utf-8") text = f.read() pocet = 0 for slovo in text.split(): if 'a' not in slovo: pocet += 1 print(pocet)
Spočítejte, kolik je čtyřek v desítkovém zápisu čísla 9999
.
pocet = 0 for znak in str(9**999): if znak == '4': pocet += 1 print(pocet)
Najděte dvě prvočísla, mezi kterými je rozdíl 114
. Můžete přitom použít výše napsanou funkci prvocisla(n)
, která vám vrátí seznam všech prvočísel menších než n
.
Řešení je stejné jako u skupiny A, jen změníte jedno číslo. Mimochodem, kdybychom hledali dvě po sobě jdoucí prvočísla, můžou to být třeba 492113 a 492227.
Spočítejte, kolik je v textu slov, která obsahují písmeno p
(i kdyby tam bylo víckrát, počítejte každé slovo jen jednou). Text stáhněte (znovu) zde; tentokrát v něm není interpunkce, takže není co řešit.
f = open("test18-mp.txt", encoding="utf-8") text = f.read() pocet = 0 for slovo in text.split(): if 'p' in slovo: pocet += 1 print(pocet)