Python

Kokonaislukujen jaollisuus ja alkuluvut

Jaollisuussäännöt löytyvät kirjasta tai vaikka Wikipediasta tai Luntista.

Python osaa laskea jakojäännöksen hyvin helposti. Esimerkiksi 10/5 antaa jakojäännöseksii luvun 0, koska 5 jakaa kympin. Mutta 10/6 antaa jakojäännökseksi luvun 4, koska kuusi (6) ei mahdu kuin yhden kerran kymppiin, mutta yli jää 4.

Selvitä luvun parillisuus

Tehdään pieni koodinpätkä, joka kertoo onko annettu luku parillinen vai pariton.

i = int(input("Kerro luku: "))
if i % 2 == 0:
    print(" - parillinen")
else:
    print(" - pariton")

Tehtävä 1. Muokkaa koodinpätkää selvittämään, onko luku jaollinen kolmella.

Ensin kysytään luku ja muutetaan se int()-käskyllä kokonaisluvuksi. Kokeile poistaa int-käsky ja testaa toimiiko koodi silloin.

lasketaan jakojäännös kahdella (eli onko se parillinen). Jos jakojäännön on nolla if i % 2 == 0:, tulostetaan että parillinen. Muutoin (else:) pariton.

Pienten lukujen parillisuus

Muokataan äskeistä koodia kertomaan lukujen 1...10 parillisuus.

i = 1

while i <= 10:
    print("Luku: ", i)
    if i % 2 == 0:
        print(" - parillinen")
    else:
        print(" - pariton")
	i += 1

Tehtävä 2. Muokkaa koodinpätkää kertomaan kaikkien 100 pienempien lukujen jaollisuus!

Tehtävä 3. Selvitä, mitkä luvut, jotka ovat pienempiä kuin 100 ovat jaollisia seitsemällä.

Seitsemällä jaollisuus hypättiin matikan tunnilla yli, mutta täällä sekin voidaan käydä. On aluksi yllättävää, että näinkin helposti voi sen testata. Siis kerrot luvun viimeisen numeron kahdella ja vähennät sen loppujen numeroiden muodostamasta luvusta. Tutki sen jaollisuutta seitsemällä vaikka samalla tavalla.

Tehtävä 4. Muuta koodia aloittamaan laskenta luvusta 314 kohti nollaa ja selvitä mitkä luvut ovat jaollisia luvulla 13.

Äskeinen ehtolausekehärpäke laitetaan silmukan sisään. Silmukka on nyt while 1 <= 10: tyyppiä, eli sen sisässä olevaa toistetaan niin kauan kuin i on pienempi tai yhtäsuuri kuin kymmenen.

Nyt se tulostaa useamman luvun kerrasta.

Alkuluvut

Alkuluvut ovat lukuja, jotka ovat jaollisia vain luvulla 1 ja luvulla itsellään. Siis esimerkiksi luku 6=2×3 ei ole alkuluku, mutta luku 3 on alkuluku.

Tehdään lyhyt (ja tehoton) Python-skripti selvittämään, onko annettu luku alkuluku.

i = int(input("Anna tutkittava luku: "))

if i % 2 == 0:
	print("Ei alkuluku - parillinen")
else:
	j = 3
	while j * j <= i:
		if i % j == 0:
			print("Jaollinen luvulla " + str(j) )
		j += 2

Tehtävä 5. Poista käskystä str(j) funktio str ja tutki, mitä tapahtuu.

Tehtävä 6. Lisää tulostukseen myös se toinen tulon tekijä, esimerkiksi Luku 15 = 3 x 5.

Parillinen luku ei voi olla alkuluku.

Testataan silmukassa kaikilla parittomilla luvuilla, jos jakojäännös olisi nolla. Riittää kuitenkin tutkia vain luvut, joiden neliö on pienempi kuin tutkittava luku (miksi?). Jos jakojäännös on nolla, kerrotaan että se ei ole alkuluku, vaan jaollinen jollain luvulla.

Tehtäviä

Tehtävä 7. Selvitä while-silmukassa kaikki lukua 1000 pienemmät alkuluvut.

Tehtava 8. Muuta alkulukukoodia sellaiseksi, että sanoo Alkuluku, jos luku on alkuluku.