Een natuurlijk getal $$n$$ wordt een verscheurd getal genoemd als het in twee stukken
$$n_1$$ en $$n_2$$ kan opgedeeld worden, zodat $$(n_1+n_2)^2$$
terug het oorspronkelijke getal $$n$$ oplevert. Hierbij moeten beide stukken minstens uit één cijfer bestaan..
Verscheurd getal
Verscheurd getal
Bron: Dudeney HE
(1917). Amusements in Mathematics (puzzle 113).
Dover Publications. ISBN:978-0486204734.
Zo is 88209 bijvoorbeeld een verscheurd getal omdat
\[(88+209)^2 = 297^2 = 88209\]
Opgave
Lees een geheel getal in en bepaal of dit een verscheurd getal is.
De uitvoer is beperkt tot één van beide teksten "verscheurd" of "niet verscheurd".
Voorbeeld 1
Ingelezen getal is
88209
Voorbeeld 2
Ingelezen getal is
88210
>>> main()
niet verscheurd
Tips
Hoe begin ik hieraan?
Schrijf eerst een lus die alle mogelijk opsplitsingen in twee stukken n1
en
n2
uitschrijft.
Hoe kan ik een getal splitsen?
Gebruik een slice [:i]
waarbij i
de waarden 1,2,... aanneemt.
Als je niets invult vóór of na de dubbelpunt zal Python het begin of einde nemen van de string.
Bekijk onderstaande code:
tekst = "abcdefgh"
index = 3
tekst_deel1 = tekst[:index]
tekst_deel2 = tekst[index:]
print(tekst_deel1)
print(tekst_deel2)
Wat doe ik nu met alle splitsingen?
Controleer voor elke opsplitsing of de voorwaarde voldaan is.
Zet daarbij de deelstrings om naar gehele getallen.
Ik krijg teveel uitvoer.
Je mag bij de controle van de voorwaarde geen else
toevoegen.
Wanneer schrijf ik dan de tekst "niet verscheurd" ?
Gebruik een hulpvariabele die 'onthoudt' of het getal verscheurd is.
Nadat alle splitsingen gecontroleerd zijn, kan je dan weten of er nog tekst moet geprint worden omdat het getal
niet verscheurd is.
Optioneel kan je ook de lus stoppen als je een opsplitsing vindt die aan de voorwaarde voldoet.