629317xyh 发表于 2018-3-1 11:03:55

def jiecheng(num):
    if num == 0:
      return 1
    else:
      return (num * jiecheng(num - 1))


for i in range(100,1000):
    list_i=list(str(i))
    result = 0
    for n in list_i:
      result += jiecheng(int(n))

    if result == i:
      print('%d的值等于其各位数字的阶乘之和!' % i)

~常想一二~ 发表于 2018-3-1 11:14:21

难道不是阶乘之和?

def factorial(n):
    c = 1
    for i in range(1, n+1):
      c *= i
    return c
for i in range(100,1000):
    a = int(i / 100)
    b = int(i / 10) - 10 * a
    c = i -100 * a - b * 10
    t =factorial(a) + factorial(b) + factorial(c)
    if t == i:
      print(i)
      continue


jerryxjr1220 发表于 2018-3-1 11:48:24

from math import factorial as f
print()

victor.xu 发表于 2018-3-1 12:42:44

为什么有些题目后面的回复设置称“此帖仅作者可见”

graceasyi 发表于 2018-3-1 16:00:02

应该是各位数的阶乘之和吧

from functools import reduce

def fact(n):
    if n == 0:
      return 1
    else:
      return reduce(lambda x, y: x*y, range(1, n+1))      # 求阶乘

for i in range(100, 1000):
    if i == fact(i % 10) + fact(i // 10 % 10) + fact(i // 100):
      print(i)
结果:
145

核武器 发表于 2018-3-1 17:11:22

def love(n):
    if n:
      return n * love(n-1)
    else:
      return 1



for i in range(100,1000):
    a = 0
    num = i
    while num:
      n = num%10
      num = num//10
      a = a + love(n)
    if a == i:
      print(i)

haijun123 发表于 2018-3-1 19:18:34

看下答案

solomonxian 发表于 2018-3-1 21:17:11

其值等于各位数字的阶乘??是阶乘之和吗?
import math

def fun(n=3):
    return [i for i in range(10**(n-1), 10**n)
            if i == sum(map(math.factorial, (int(j) for j in str(i))))]
不过写成函数也没啥意思,太慢了,n=7就受不了了

塔利班 发表于 2018-3-2 08:30:45

def n(x):
    if x<=1:
      return 1
    else:
      return n(x-1)*x
for i in range(100,1000):
    s=str(i)
    a=int(s)
    b=int(s)
    c=int(s)
    if i==n(a)+n(b)+n(c):
      print(i)
放假归来,老实写作业{:10_250:}

溯影 发表于 2018-3-2 11:21:29

def ladder(number):
      result = 1
      for i in range(1,number+1):
                result = result * i

      return result

def find(number):
      bit1 = number % 10
      bit2 = number // 10 % 10
      bit3 = number //100
      if number == ladder(bit1)+ladder(bit2)+ladder(bit3):
                return number
               

      return 0

if __name__ == '__main__':
      for number in range(100,1000):
                if find(number):
                        print(number)

久伴521 发表于 2018-3-2 17:32:30

666

大硕硕 发表于 2018-3-2 19:09:11

def cal(n):   #计算阶乘的函数
    result = 1
    for i in range(1,n):
      result *= i
    return result
   
for each in range(100,1000):
    s = str(each)
    if cal(int(s)) + cal(int(s)) + cal(int(s)) == each:
      print(each)
结果:
722
723

Mr.Rothbart 发表于 2018-3-2 19:28:16

def factorial(n):
   
    fact = 1
   
    for i in range(1,n+1):
      
      fact *= i
      
    return fact

for i in range(100,1000):

    j = i

    m = 0
   
    while j > 0:
      
      a = j % 10

      m += factorial(a)

      j //= 10

    if i == m:

      print(i)





//输出好像只有145

纳兰小寒 发表于 2018-3-2 20:47:33

def fun(n):
    if n == 1:
      return 1
    else:
      return n * fun(n-1)

for i in range(100,1000):
    sun = 0
    for x in str(i):
      if x == '0':
            continue
      sun += fun(int(x))
    if sun == i:
      print(i)

等酒香醇 发表于 2018-3-2 21:53:05

def jiecheng(number):
    global result
    result = 1
    if number >1:
      for each in range(1,number+1):
            result = result * each
    return result

for each in range(100,999):

    a = each % 10
   
    b = (each // 10) % 10
   
    c = each // 100
   
   
    if each == int(jiecheng(a)) + int(jiecheng(b)) + int(jiecheng(c)):
      print(each)
   

瞬秒爆加速 发表于 2018-3-3 14:06:56

import math
for jj in range(1,10):
    #判断某一数字阶乘>百位数值的范围
    if math.factorial(jj)>jj*100:
      a=[]
      #列出阶乘的列表
      jc =
      #获取阶乘最大三位数值范围
      for ii in range(100,sum(jc)+1):
            #判断数值符合的条件
            if ii == math.factorial(divmod(divmod(ii,10),10))+math.factorial(divmod(divmod(ii,10),10))+math.factorial(divmod(ii,10)):
                a.append(ii)
      break
print(a)

tsembrace 发表于 2018-3-3 16:43:14

LZ题意没明确啊,应该是各位数字阶乘之和吧
'''
水仙花数大家都熟悉, 即一个 3 位数等于其各位数字的立方和。
现在把题目稍作修改,找出这样的三位数,其值等于其各位数字的阶乘之和。
'''
#求一个数字的阶乘
def funa(n):
    if (n==0):
      return 1
    else:
      return n*funa(n-1)
   
#求一个三位数的各位数字阶乘之和
def funb(n):
    a=funa(n//100)
    b=funa(n%100//10)
    c=funa(n%10)
    return a+b+c

for i in range(100,1000):
    if (i==funb(i)):
      print(i)
      

小黑大人 发表于 2018-3-3 16:55:32

for i in range(100,1000):
    a = i % 10
    b = (i//10)%10
    c = i // 100
    def function(x):
      result = x
      for l in range(1,x):
            result *= l
      return result
    result = function(a) + function(b) + function(c)
    if result == i:
      print(i)

blueblues 发表于 2018-3-3 17:17:54

import math


def jiecheng(k):
    if k == 1 :
      return(1)
    else:
      return k * jiecheng(k - 1)



for i in range(1,7):                #7的阶乘已经超过一千
    for j in range(1,7):            #没有必要计算100-1000那样太费时
      for m in range(1,7):
            all = 0
            all = jiecheng(i) + jiecheng(j) + jiecheng(m)
            if all < 1000 & all == (i * 100 + j * 10 + m):
                print(all)

皮皮小发 发表于 2018-3-3 17:24:15

def recursion(n):
    result = n
    for i in range(1,n):
      result *= i
    return result


def number(i):
    sum1 = 0
    temp = i
    while temp:
      a = temp % 10
      b = recursion(a)
      sum1 += b
      temp = temp // 10
    if sum1 == i:
      print(i,end='')

for i in range(100,1000):
    number(i)


RESTART: C:/Users/Administrator/AppData/Local/Programs/Python/Python36-32/三位数.py
145
>>>
页: 1 2 [3] 4
查看完整版本: Python:每日一题 158