Eğer 47 sayısını alır ters çevirir ve toplarsak 47+74 = 121 sayısını elde ederiz ki bu sayı palindromik bir sayıdır(sağdan ve soldan yazıldığında aynı).
Fakat her sayı bu kadar kolay palindrom üretmez. Örneğin:
349 + 943 = 1292
1292 + 2921 = 4213
4213 + 3124 = 7337
349 sayısının palindrome olması 3 öteleme gerektirdi.
Bazı sayılar, henüz kimse kanıtlamadı, asla palindrom sayı üretmezler, 196 gibi. Bu sayılara Lychrel sayıları denir. Biz burada kanıtlanmadığı için en fazla 50 ötelemeye kadar olup olmadığına bakacağız. Eğer 50 ötelemeye kadar bir palindrom üretmediyse Lychrel sayısıdır diyeceğiz. Fakat 50 ötelemenin sonrasında da palindrome olan sayılar var, misal 4668731596684224866951378664 (53 öteleme, 28 basamaklı).
Soru: 10.000'in altında kaç Lychrel sayısı vardır?
Çözüm
def Palindromic(ntr): #Palindrome sayı test fn.
n1 = str(ntr) #n1
n2 = n1[::-1] #n2, n1'in tersten yazımı
if n1==n2:
return True
else:
return False
def isLychrel(n): #Lychrel sayısı test fn.
counter = 0
while counter<50: #Limit 50
reverse = int(str(n)[::-1]) #Sayının tersiniri
res = n + reverse #Tersiniri ile kendinin toplamı (res)
if Palindromic(res): #Eğer bu sayı palindromik ise
return False
else:
n = res #Tekrar tersiniriyle toplayıp dene
counter += 1
return True
def main():
counter = 0
for n in range(10, 10001):
if isLychrel(n):
counter += 1
print("Result: ",counter)
if __name__ == '__main__':
main()
Cevap: 249
javascript ile mi çözdünüz
YanıtlaSilya herhangi girilen bir sayı için palindrom olup olmadığını araştırmasını istesek 50 adımda?
YanıtlaSilya herhangi girilen bir sayı için lychrel olup olmadığını araştırmasını istesek 20 adımda?
YanıtlaSil