Project Euler Problem 5 (Python)

preview_player
Показать описание
Project Euler 5. problemi çözdük...
Рекомендации по теме
Комментарии
Автор

Kendi adıma teşekkür etmek istiyorum size hocam. İzlenmesi fazla olmasa bile bu soruları çözüp, çözümleri bizimle paylaşıyorsunuz. İyi ki varsınız hocam.

yakupselami
Автор

Her soruda farklı farklı çözümler bakıyorum ki pekişsin diye. En basit ve temizi sizin çözümünüz. Teşekkürler.

Moon-DG
Автор

Python'da yeniyim hocam ilk 10 dersinizi izledim emeğinize sağlık
min = 2
max = 20
carpan = min
var = min
sayac = 1
prime = True
while prime==True:
for i in range(min, max+1):
if var%i==0:
if i==max and var%max==0:
prime=False
print(f"EKOK = {var}")
break
else:
sayac+=1
var=carpan*sayac
if var%i==0:
carpan=var
sayac=1
break

mehmetlkn
Автор

hocam yaptığınız iş çok güzel bir şey hakkınız ödenmez lütfen bu serinin devamı olsun sağlıcakla kalın

Tuncaydin
Автор

aslinda gcd yerine lcm kullanarak tek satirda su sekilde cozebilirsiniz:
def smallNum(n):
import math
return math.lcm(*list(range(1, n+1)))

deniz-gunay
Автор

peki hocam lcm için gcd ye gerek var mıydı direk lcm tanımlayıp şu şekilde yapsak da oluyor:

import math
import functools
def lcm(x, y):
return math.lcm(x, y)
liste=range(1, 21)

result=functools.reduce(lcm, liste)

print(result)
sonuç yine 232792560
ve daha kısa...?

richleno
Автор

def control(x):
sayac = 0
for i in range(1, 21):
if x % i == 0:
sayac += 1
if sayac == 20:
return True
else:
return False


sayi = 0
while True:
sayi += 1
if control(sayi) :
break
print(sayi)

Ben böyle yaptım 10 katları olan en küçük sayı çok çabuk buluyor ama 20 katları dediğimde işlem çok uzun oluyor üç buçuk dk sürdü sonra output verdi

root
Автор

hocam x, y yazıyoruz reduce un yanına toplatıyoruz ama lcm, liste yazınca ekokunu alıyor her aldıgı ıkı sayının yanı parantezin soluna yapacagı ıslemı sagına da hangı sayılarla yapacagını mı yazıyoruz ?

enessgok
Автор

sayi = 1
bolum = 1
while bolum == 20:
if sayi % bolum == 0:
bolum += 1
else:
sayi += 1
print(sayi)
hocam bu kod neden dogru calismiyor yardimci olursaniz sevinirim

muhendisbey
Автор

Hocam kendi functools.reduce fonksiyonumu yazarak cozdum :)O da boyle mi calisiyor acaba?
import math
liste = []
for i in range (1, 21):
liste.append(i)
def gcd(x, y):
return math.gcd(x, y)
def lcm(x, y):
return (x*y) // gcd(x, y)
while True:
n = 0
j = lcm(liste[n], liste[n+1])
del liste[0:2]
liste.insert(0, j)
if len(liste) == 1:
print(liste[0])

hm
Автор

def carpan_bulma(sayi):
carpanlar = []
for i in range(2, sayi+1):
while sayi % i == 0:
sayi /= i
carpanlar.append(i)
return carpanlar

def kat_bulma(sayi):
sonuc = sayi
for i in range (2, sayi):
gecici_sayi = sonuc
bolenler = list(carpan_bulma(i))
for b in bolenler:
if gecici_sayi % b != 0:
sonuc *= b
else:
gecici_sayi /= b

return sonuc

print(kat_bulma(20))


Emeğinize teşekkürler hocam.
Farklı çözümler içinden en efektif, hızlı, kodu nasıl seçeriz? Bunu görebilmenin bir yolu var mı?

dunyahali
Автор

x=1
while True:
s = 0
i = 1
while i<=20:
if x%i==0:
s+=1
else:
break
i+=1
if s==20:
print(x)
break
x+=1

baya uzun sürüyor ama sonuç doğru

ElmeenLyrics
Автор

ben cozumu buldum ancak 91 saniyede sonuc veriyor sorun olur mu :D

semihkartal
Автор

sayı =1
while True:
i=1
while i <= 10:
if sayı % i == 0:
i += 1
else:
sayı += 1
print(sayı)

Ben 10 a kadar yaptım. Program çalışıyor fakat döngüyü nasıl sonlandıracağım bir türlü bulamadım. Yardımlar için şimdiden teşekkürler

kursadkaragol
Автор

sayi = 1
liste = []
while True:
for i in range(1, 21):
if sayi % i == 0:
liste.append(i)
continue
else:
liste = []
break
if len(liste) == 20:
print(sayi)
break
sayi += 1

86, 5 saniyede çıktı verdi :D

turkan
Автор

sayi = 1
while True:
tam_bolen = True
for i in range(1, 20):
if sayi % i != 0:
tam_bolen = False
sayi += 1
break
if tam_bolen:
print(sayi)
break

AbdullahTursun-cf
Автор

benim reducesuz çözümüm

import math
liste=[i for i in range(1, 21)]
sonuc=1
def ekok(a, b):
return ((a*b)//math.gcd(a, b)) #direkt bölme yapınca type error veriyor.

for i in liste:
sonuc=ekok(i, sonuc)




print(sonuc)

berkebilgic
Автор

def en_buyuk_bolunen():
en_bolunen = 20
while True:
if all(en_bolunen % i == 0 for i in range(1, 21)):
return en_bolunen
en_bolunen += 20

print(en_buyuk_bolunen())

esmaaras
Автор

benim çözüm 150 satır sürdü :D

def asalmi(sayi):
prime = True
if sayi == 0 or sayi == 1:
prime = False
return prime
for i in range(2, int(sayi**0.5)+1):
if sayi % i == 0:
prime = False
break
return prime


def carpanlarına_ayir(sayi):
sayi1 = sayi
sayi2 = sayi
div = 2
asalcarpanlar = dict()
cnt = 0

while True:
while True:
if sayi1 % div == 0:
sayi1/=div
cnt+=1
else:
break
asalcarpanlar[div] = cnt
cnt = 0
div += 1
if sayi1 == 1:
sayi2-=1
div = 2
break
if sayi2 == 1:
break
return asalcarpanlar

lastvar = 0
var = 1
mul = 1
liste2 = list()
liste = list()
for i in range(2, 21):

for k in range(2, 21):
for j in liste:
if not j.get(k) == None:
liste2.append(j.get(k))
liste2.append(0)
var = max(liste2)
lastvar = k**var
if lastvar == 0:
lastvar =1
mul*=lastvar
liste2.clear()
print(mul)

ayhannkaraca
Автор

sayi = 21
num = 1
while num < 21:
if sayi % num == 0:
num += 1


else:
sayi += 1
num = 1
print(sayi) #hocam kütüphane kullanmadan şöyle yaptım doğru heralde

ZaferDemiragac
join shbcf.ru