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
Verscheurd getal
Bron: Dudeney HE (1917). Amusements in Mathematics (puzzle 113).1 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
>>> main()
verscheurd 

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.