Bir sayının tek sayılı veya çift sayıdaki bölen sayısına sahip olup olmadığını belirlemek için aşağıdaki kodu bir araya getirdim. Kod nispeten küçük sayılarla iyi çalışır, ancak 9 rakam gibi daha büyük bir sayı girildiğinde kilitlenir.Daha az bellek kullanarak hesaplamalarımı gerçekleştirmek için Python kodumu nasıl optimize edebilirim?
def divisors(n):
num = len(set([x for x in range(1,n+1) if not divmod(n,x)[1]]))
if (num != 0 and num % 2 == 0):
return 'even'
else:
return 'odd'
Bunu daha verimli hale getirmek için ne yapabilirim?
Ayrıca bkz. Http://stackoverflow.com/questions/171765/what-is-the-best-way-to-get-all-the-divisors-of-a-number veya http://stackoverflow.com/questions/12421969/find-all-divisors-of-a-number-optimization –