Форум сайта python.su
Помогите решить задачу
Простыми делителями числа 13195 являются 5, 7, 13 и 29. Найти наибольший простой делитель заданного числа n.
Для этого объявить функцию f(n), которая вернет наибольший простой делитель n.
Офлайн
я так понимаю тебе нужно сделать нечто подобное ? http://www.cleverstudents.ru/divisibility/all_divisors_of_number.html
Офлайн
а вообще наибольший простой делитель числа 13195 будет число math.fabs(13195)
def delit(N) print(N)
Отредактировано sypper-pit (Окт. 14, 2014 20:57:04)
Офлайн
Если решать в лоб, то
def f(n): lst = [i for i in range(2, n // 2 +1) if not n % i] if not lst: return 1 return max(lst)
Отредактировано dimy44 (Окт. 14, 2014 21:11:21)
Офлайн
sypper-pit13195 - составное число.
а вообще наибольший простой делитель числа 13195 будет число math.fabs(13195)
dimy44
Если решать в лоб, то
>>> f(8) 4 >>>
Отредактировано py.user.next (Окт. 15, 2014 01:49:42)
Офлайн
Тьфу. Конечно тот мой код неверен, невнимательно условие прочитал и искал просто наибольший делитель.
Офлайн
#!/usr/bin/env python3 def factor(n): while n > 1: for i in range(2, n + 1): if n % i == 0: n = int(n / i) yield i break def f(n): if n > 1: return max(factor(n))
>>> import max_pdelim >>> max_pdelim.f(13195) 29 >>>
Отредактировано py.user.next (Окт. 15, 2014 08:13:45)
Офлайн
Ferry_Gлучше одну, чем две :D :D
объявить функцию f(n), которая вернет наибольший простой делитель n.
>>> def f(n): ... pdelim = 2 ... while n > 1: ... if n % pdelim == 0: ... n = n/pdelim ... else: ... pdelim+=1 ... return pdelim ... >>> f(13195) 29 >>>
Отредактировано Nata (Окт. 15, 2014 09:39:43)
Офлайн
py.user.nextа зачем тут int()?if n % i == 0: n = int(n / i)
Отредактировано Nata (Окт. 15, 2014 11:21:31)
Офлайн
NataТам она подаётся в range(), а результат деления - вещественный.
а зачем тут int()?
Nata
лучше одну, чем две
[guest@localhost max_pdelim]$ python3 -mdoctest max_pdelim.test
**********************************************************************
File "max_pdelim.test", line 4, in max_pdelim.test
Failed example:
f(0)
Expected nothing
Got:
2
**********************************************************************
File "max_pdelim.test", line 7, in max_pdelim.test
Failed example:
f(1)
Expected nothing
Got:
2
**********************************************************************
1 items had failures:
2 of 14 in max_pdelim.test
***Test Failed*** 2 failures.
[guest@localhost max_pdelim]$
Офлайн