import math #Kök almak için math modülünü içeri aktardık
tamkareler = [] #tam kare sayıları almak için bir liste oluşturduk çünkü S- sayıları sadece tam kare sayılar için geçerli. Diğer tür sayılar kök dışına ondalıklı sayı olarak (float) çıkar. Kök içindei sayılarıda toplayarak ondalıklı sayı elde edemeyiz
for i in range(1,10000): #1 den 9999a kadar olan sayıların her biri için aşşağıdakileri yaptık
sayi = math.sqrt(i) #i sayısının karesini sayi değişkenine aktardık
if len((str(sayi)))<=4: #eğer sayi değişkeninin karakter uzunluğu 4 ten büyük değilse aşşağıdakileri yaptırdık. Sebebide 9999 a kadar olan en büyük tam kare sayının karekökü 99dur. Ama her değer floata dönüştüğü için şöyle bir çıktı geliyor: 99.0 gibi. O yüzden 4 haneyi geçerse bir float değerdir yani herhangi bir sayının karekökü değildir. Not: Float olması demek, tam kare olmayan bir sayının karekökünü almışız demek
# print(f"{sayi} -> {i}") #görebilmek için yazdırdık
tamkareler.append(int(i)) #tamkareler listemize bulduğumuz tam kare leri ekledik
sonuçlar = []
for i in tamkareler:
uzunluk = len(str(i))
if uzunluk == 2:
birinci_hane = int(str(i)[0])
ikinci_hane = int(str(i)[1])
sonuc = math.sqrt(i)
if sonuc == birinci_hane+ikinci_hane:
sonuçlar.append(i)
if uzunluk == 3:
birinci_hane=int(str(i)[0])
ikinci_hane=int(str(i)[1])
üçüncü_hane=int(str(i)[2])
ilk_iki_hane=int(str(i)[0:2])
son_iki_hane=int(str(i)[1:3])
sonuc = math.sqrt(i)
if sonuc == birinci_hane+ikinci_hane:
sonuçlar.append(i)
elif sonuc== ikinci_hane+üçüncü_hane:
sonuçlar.append(i)
elif sonuc== birinci_hane+üçüncü_hane:
sonuçlar.append(i)
elif sonuc==ilk_iki_hane+üçüncü_hane:
sonuçlar.append(i)
elif sonuc== birinci_hane+son_iki_hane:
sonuçlar.append(i)
if uzunluk == 4:
bir=int(str(i)[0])
iki=int(str(i)[1])
üç=int(str(i)[2])
dört = int(str(i)[3])
ilk_iki=int(str(i)[0:2])
son_iki=int(str(i)[2:4])
ilk_üç =int(str(i)[0:3])
son_üç =int(str(i)[1:4])
sonuc = math.sqrt(i)
if sonuc == bir:
sonuçlar.append(i)
elif sonuc == iki:
sonuçlar.append(i)
elif sonuc == üç:
sonuçlar.append(i)
elif sonuc == dört:
sonuçlar.append(i)
elif sonuc == bir+iki:
sonuçlar.append(i)
elif sonuc == bir+üç:
sonuçlar.append(i)
elif sonuc == bir+dört:
sonuçlar.append(i)
elif sonuc == iki+üç:
sonuçlar.append(i)
elif sonuc == iki+dört:
sonuçlar.append(i)
elif sonuc == üç+dört:
sonuçlar.append(i)
elif sonuc == bir+iki+üç:
sonuçlar.append(i)
elif sonuc == bir+üç+dört:
sonuçlar.append(i)
elif sonuc == iki+üç+dört:
sonuçlar.append(i)
elif sonuc == bir+iki+üç:
sonuçlar.append(i)
elif sonuc == bir+iki+üç+dört:
sonuçlar.append(i)
#
elif sonuc == ilk_iki+son_iki:
sonuçlar.append(i)
elif sonuc == ilk_iki+üç:
sonuçlar.append(i)
elif sonuc == ilk_iki+dört:
sonuçlar.append(i)
elif sonuc == ilk_iki+üç+dört:
sonuçlar.append(i)
elif sonuc == son_iki+bir:
sonuçlar.append(i)
elif sonuc == son_iki+iki:
sonuçlar.append(i)
elif sonuc == son_iki+bir+iki:
sonuçlar.append(i)
elif sonuc == ilk_üç+dört:
sonuçlar.append(i)
elif sonuc == son_üç+bir:
sonuçlar.append(i)
#
elif sonuc == ilk_iki:
sonuçlar.append(i)
elif sonuc == son_iki:
sonuçlar.append(i)
elif sonuc == ilk_üç:
sonuçlar.append(i)
elif sonuc == son_üç:
sonuçlar.append(i)
print(sonuçlar)
#https://www.youtube.com/channel/UCt7_jmwhIWEFq0VzSJC-Y1A?view_as=subscriber
#Kanalda da algoritma alıştırmalarına başladım. Bu tarz şeylerede geçeceğim yakında
Kod çok uzun adam bin haneli sayı istese yine böyle tek tek yazacakmıydın diyenler gelmeden önce: Adam bilerek zaten 5 haneye bile geçmiyor çünkü bunun en sağlıklı yöntemi budur. Haneleri rasgele seçip her birini 100 kere denetip yine yapabiliriz fakat bu şekilde tüm olasılıkları ele alıyoruz. 4 haneli bir kümenin 15 elemanlı alt kümelerinin hepsini kendi içinde topluyoruz. Aslında 4 hanelide o kadar uzatmayada gerek yoktu çünkü en düşük 100 ve 100 ü elde etmek için en büyük rakam olan 9 u 4 defa bile toplasak yine ulaşamayız. Dolayısıyla 2 hanelileri toplayarak başlayabilirdik fakat mantığının anlaşılması açısından böyle yaptımPython:import math #Kök almak için math modülünü içeri aktardık tamkareler = [] #tam kare sayıları almak için bir liste oluşturduk çünkü S- sayıları sadece tam kare sayılar için geçerli. Diğer tür sayılar kök dışına ondalıklı sayı olarak (float) çıkar. Kök içindei sayılarıda toplayarak ondalıklı sayı elde edemeyiz for i in range(1,10000): #1 den 9999a kadar olan sayıların her biri için aşşağıdakileri yaptık sayi = math.sqrt(i) #i sayısının karesini sayi değişkenine aktardık if len((str(sayi)))<=4: #eğer sayi değişkeninin karakter uzunluğu 4 ten büyük değilse aşşağıdakileri yaptırdık. Sebebide 9999 a kadar olan en büyük tam kare sayının karekökü 99dur. Ama her değer floata dönüştüğü için şöyle bir çıktı geliyor: 99.0 gibi. O yüzden 4 haneyi geçerse bir float değerdir yani herhangi bir sayının karekökü değildir. Not: Float olması demek, tam kare olmayan bir sayının karekökünü almışız demek # print(f"{sayi} -> {i}") #görebilmek için yazdırdık tamkareler.append(int(i)) #tamkareler listemize bulduğumuz tam kare leri ekledik sonuçlar = [] for i in tamkareler: uzunluk = len(str(i)) if uzunluk == 2: birinci_hane = int(str(i)[0]) ikinci_hane = int(str(i)[1]) sonuc = math.sqrt(i) if sonuc == birinci_hane+ikinci_hane: sonuçlar.append(i) if uzunluk == 3: birinci_hane=int(str(i)[0]) ikinci_hane=int(str(i)[1]) üçüncü_hane=int(str(i)[2]) ilk_iki_hane=int(str(i)[0:2]) son_iki_hane=int(str(i)[1:3]) sonuc = math.sqrt(i) if sonuc == birinci_hane+ikinci_hane: sonuçlar.append(i) elif sonuc== ikinci_hane+üçüncü_hane: sonuçlar.append(i) elif sonuc== birinci_hane+üçüncü_hane: sonuçlar.append(i) elif sonuc==ilk_iki_hane+üçüncü_hane: sonuçlar.append(i) elif sonuc== birinci_hane+son_iki_hane: sonuçlar.append(i) if uzunluk == 4: bir=int(str(i)[0]) iki=int(str(i)[1]) üç=int(str(i)[2]) dört = int(str(i)[3]) ilk_iki=int(str(i)[0:2]) son_iki=int(str(i)[2:4]) ilk_üç =int(str(i)[0:3]) son_üç =int(str(i)[1:4]) sonuc = math.sqrt(i) if sonuc == bir: sonuçlar.append(i) elif sonuc == iki: sonuçlar.append(i) elif sonuc == üç: sonuçlar.append(i) elif sonuc == dört: sonuçlar.append(i) elif sonuc == bir+iki: sonuçlar.append(i) elif sonuc == bir+üç: sonuçlar.append(i) elif sonuc == bir+dört: sonuçlar.append(i) elif sonuc == iki+üç: sonuçlar.append(i) elif sonuc == iki+dört: sonuçlar.append(i) elif sonuc == üç+dört: sonuçlar.append(i) elif sonuc == bir+iki+üç: sonuçlar.append(i) elif sonuc == bir+üç+dört: sonuçlar.append(i) elif sonuc == iki+üç+dört: sonuçlar.append(i) elif sonuc == bir+iki+üç: sonuçlar.append(i) elif sonuc == bir+iki+üç+dört: sonuçlar.append(i) # elif sonuc == ilk_iki+son_iki: sonuçlar.append(i) elif sonuc == ilk_iki+üç: sonuçlar.append(i) elif sonuc == ilk_iki+dört: sonuçlar.append(i) elif sonuc == ilk_iki+üç+dört: sonuçlar.append(i) elif sonuc == son_iki+bir: sonuçlar.append(i) elif sonuc == son_iki+iki: sonuçlar.append(i) elif sonuc == son_iki+bir+iki: sonuçlar.append(i) elif sonuc == ilk_üç+dört: sonuçlar.append(i) elif sonuc == son_üç+bir: sonuçlar.append(i) # elif sonuc == ilk_iki: sonuçlar.append(i) elif sonuc == son_iki: sonuçlar.append(i) elif sonuc == ilk_üç: sonuçlar.append(i) elif sonuc == son_üç: sonuçlar.append(i) print(sonuçlar) #https://www.youtube.com/channel/UCt7_jmwhIWEFq0VzSJC-Y1A?view_as=subscriber #Kanalda da algoritma alıştırmalarına başladım. Bu tarz şeylerede geçeceğim yakında
rica ederimTeşekkür ederim.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?