Помогите решить задачу
Простыми делителями числа 13195 являются 5, 7, 13 и 29. Найти наибольший простой делитель заданного числа n.
Для этого объявить функцию f(n), которая вернет наибольший простой делитель n.
def delit(N) print(N)
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)
sypper-pit13195 - составное число.
а вообще наибольший простой делитель числа 13195 будет число math.fabs(13195)
dimy44
Если решать в лоб, то
>>> f(8) 4 >>>
#!/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 >>>
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 >>>
py.user.nextа зачем тут int()?if n % i == 0: n = int(n / i)
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]$