Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 297^2 = 88209 --> 88 + 209 = 297
- # Python program idea from rosettacode.org
- # Not elegant math, only brutal string handling...;-)
- # Juhani Kaukoranta 10.7.2018
- #
- import time
- minvalue = int(input("anna Kaprekar-lukujen tulostusvälin alaraja "))
- maxvalue = int(input("anna Kaprekar-lukujen tulostusvälin yläraja "))
- time0 = time.perf_counter()
- for x in range(minvalue,maxvalue):
- # Kaikilla Kaprekar-luvuilla luvun ja sen neliön mod 9 on sama
- # On muitakin lukuja, joilla on sama ominaisuus, mutta tämä ehto
- # rajoittaa merkittävästi tutkittavaa lukujoukkoa
- if (x*(x-1)) % 9 == 0 :
- n2 = str(x**2)
- for i in range(len(n2)):
- # a on x:n neliön alkuosa, b on x:n neliön loppuosa, x itse luku
- # tutkitaan onko luku x neliönsä alkuosan ja loppuosan summa
- a, b = int(n2[:i] or 0), int(n2[i:])
- if b and a + b == x:
- print(x,"^2 = ",n2,",",a,"+",b," = ",x)
- time1 = time.perf_counter()
- print("Aikaa kului ",time1-time0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement