Прикреплённый файл «shorts-11.23.py»

Загрузка

   1 #!/usr/bin/python
   2 # coding: utf
   3 
   4 # Найти сумму цифр заданного натурального числа
   5 N=input("Введите натуральное число: ")
   6 
   7 def sum1(n):
   8     if n<10: return n
   9     return n%10+sum1(n/10)
  10 
  11 def sum2(n):
  12     return n%10 + (n>9 and sum1(n/10) or 0)
  13 
  14 print "Сумма цифр:", sum1(N), sum2(N)
  15 
  16 # Вычисление суммы: 2! + 4! + 6! + ... + п! 
  17 def bfact1(n,k=2):
  18     # (1*2)+(1*2*3*4)+(1*2*3*4*5*6)+...+(1*2*3*...*(n-1)*n) = 
  19     # = (1*2)*(1+3*4+3*4*5*6+...+3*4*...*n =
  20     # = (1*2)*(1+(3*4)*(5*6+...+5*6*...*n)) = ... =
  21     # = (1*2)*(1+(3*4)*(1+(5*6)*(1+(7*8)....*(1+(n-1)*n*(1+0))...)))
  22     if k>n: return 0
  23     else: return k*(k-1)*(1+bfact1(n,k+2))
  24 
  25 def bfact2(n,k=2):
  26     return k<=n and (k*(k-1)*(1+bfact1(n,k+2))) or 0
  27 
  28 def bfactD(n):  # проверочная тупая функция
  29     def fact(n): return n*(n>2 and fact(n-1) or 1)
  30     res=0
  31     for i in xrange(2,n+1,2):
  32         res+=fact(i)
  33     return res
  34 
  35 print "2! + 4! + 6! + ... + п!:",bfact1(N), bfact2(N), bfactD(N)
  36 
  37 # Вычисление наибольшего общего делителя двух натуральных чисел
  38 M=input("Введитите ещё одно натуральное число: ")
  39 
  40 def nod1(m,n):
  41     if m==n: return m
  42     m,n=max((m,n),(n,m))    # используем сравнение пар
  43     return nod1(m-n,n)
  44 
  45 def nod2(m,n):
  46     if m>n: return nod2(m-n,n)
  47     elif m<n: return nod2(n-m,m)
  48     else: return n
  49 
  50 print "Наибольшего общего делителя", M, N, ":", nod1(M,N), nod2(M,N)

Прикреплённые файлы

Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.