闻韶 发表于 2018-2-28 18:12:41

新手新手,多多指教!{:10_297:}
import math

h = 1
d = 0
u = 0

while h<10 :
        hun = math.factorial(h)
       
        while d<10 :
                dec = math.factorial(d)
               
                while u<10 :
                        unit = math.factorial(u)
                        if (h*100 + d*10 + u) == (hun + dec + unit) :
                                print(hun + dec + unit)
                        u += 1
                       
                d += 1
                u = 0
               
        h += 1
        d = u = 0

# 得145

steph0216 发表于 2018-2-28 18:54:48

from functools import reduce
f = lambda i: reduce(lambda x,y: x*y, range(1, i+1)) if i !=0 else 1
for i in range(100,1000):
    if f(i//100)+f(i%100//10)+f(i%10)==i:
      print(i)

结果咧 发表于 2018-2-28 19:38:37

for i in range(100,1000):
    a=i//100
    b=i%100//10
    c=i%100%10
    if i==a**3+b**3+c**3:
      print(i)

南城顾她 发表于 2018-2-28 20:01:23

是阶乘和还是他们三个的阶乘

昵称加载错误 发表于 2018-2-28 20:05:24

m = range(1,10)
q = w = e = 1
for x in m:
for y in m:
for z in m:
   for a in range(1,x+1):
    q *= a
   for b in range(1,y+1):
    w *= b
   for c in range(1,z+1):
    e *= c
   if q+w+e == x*100+y*10+z:
    print(q+w+e)
   q = w = e = 1

空巷无人故人叹 发表于 2018-2-28 20:07:37

def jiecheng(n):
    a = 1
    if (n == 0) or (n == 1):
      number = a
    else :
      for i in range(1,n + 1):
            a = a * i
      number = a      
    return answer

answer = []

for i in (100,1000):
    bai = int(i / 100)
    shi = int((i - bai * 100) / 10)
    ge = int(i - bai * 100 - shi * 10)
    if i == jiecheng(bai) + jiecheng(shi) + jiecheng(ge):
      answer.append(i)

print(answer)
   

lxchace 发表于 2018-2-28 20:19:50

#Narcissistic Numbers

def narNums():#计算水仙花数
    n = 100
    while n<1000:
      num_str = str(n)
      if pow(int(num_str),3)+pow(int(num_str),3)+pow(int(num_str),3) == n:
            print(n)
      n += 1
    return

def factorial(n):#计算阶乘函数
    if n == 0:
      return 1
    elif n == 1:
      return 1
    else:
      return n*factorial(n-1)

def fac_narNums():#计算阶乘水仙花数
    n = 100
    while n<1000:
      num_str = str(n)
      if factorial(int(num_str))+factorial(int(num_str))+factorial(int(num_str)) == n:
            print(n)
      n += 1
    return

def main():
    print("水仙花数:")
    narNums()
    print("阶乘水仙花数:")
    fac_narNums()
    return

if __name__ == "__main__":
    main()

水仙花数:
153
370
371
407
阶乘水仙花数:
145
>>>

xiaozhouc 发表于 2018-2-28 20:33:33

def factorialnumber():

    def factorial(n):
      result=n
      for i in range(1,n):
            result*=i
      if n==0:
            return 1
      return result
   
         
    for i in range(100,1000):
      tempvalue=i
      sumtemp=0
      for each in range(0,3):
            temp=tempvalue%10         
            sumtemp=sumtemp+factorial(temp)
            tempvalue=tempvalue//10

      if i==sumtemp:
            print("the number is: %d"%i)

factorialnumber()

凌九霄 发表于 2018-2-28 21:19:53

def factorial(x):
    result = 1
    for i in range(2, x + 1):
      result *= i
    return result


for i in range(100, 1000):
    a = int(i / 100)
    b = int(i / 10) % 10
    c = i % 10
    if (i == factorial(a) + factorial(b) + factorial(c)):
      print(i)


所得为145

fengyutianshang 发表于 2018-2-28 21:53:12

#m_158.py
#fengyutianshang
def factorial(num):
    "计算num的阶乘"
    fac = 1
    if num < 0:
      return 0
    elif num == 0:
      return 1
    else:
      for i in range(1, num + 1):
            fac = fac * i
    return fac

for a in range(1,10):
    for b in range(0, 10):
      for c in range(0, 10):
            temp = factorial(a) + factorial(b) +factorial(c)
            if temp == 100*a +10*b + c:
                fin = temp
                break
print("%d 为所求的三位数!"% fin)

125zl 发表于 2018-2-28 23:05:24

from math import *
for i in range(100,1000):
    a = i // 100
    b = i // 10 % 10
    c = i % 10
    if factorial(a) + factorial(b) + factorial(c) == i:
      print(i)

天圆突破 发表于 2018-2-28 23:17:39

def jc(a):
    if a == 0:
      return 0
    else:
      j = 1
      for i in range(1,a+1):
            j*= i
      return j

def flower(num):
    a, b, c = list(str(num))
    if jc(int(a)) + jc(int(b)) + jc(int(c)) == num:
      return True
    else:return False

if __name__ == '__main__':
    flowers = list()
    for i in range(100, 1000):
      if flower(i):
            flowers.append(i)
    print(flowers, len(flowers))

laurence5181 发表于 2018-3-1 01:16:37

剛學習編程的新手 每日練習奠定穩固的編程基礎!

def factorial(number):
    if number == 1 or number == 0:
      return 1
    return number*factorial(number-1)

answer = [factorial(i)+factorial(j)+factorial(k) for i in range(1, 10) for j in range(0, 10) for k in range(0, 10)\
          if i*100+j*10+k == factorial(i)+factorial(j)+factorial(k)]
print(answer)

__糖分 发表于 2018-3-1 09:02:47

import math


def function(num):
    factorial_sum = 0
    for each in str(num):
      factorial_sum += math.factorial(int(each))

    return factorial_sum == num


for num in range(100, 1000):
    if function(num):
      print(num, end=' ')

print()

checkily 发表于 2018-3-1 09:14:32

def calc(x):
    result=1
    x=int(x)
    for i in range(1,x+1):
      result*=i
      i+=1
    return result
      
def main():
    for i in range(100,1000):
      temp=str(i)
      result=calc(temp)+calc(temp)+calc(temp)
      if result==i:
            print(i)
   
if __name__=='__main__':
    main()

776667 发表于 2018-3-1 09:37:06

from itertools import accumulate
from operator import mul

def fun158():

    def factorial(num):
      if num == 0:
            return 1
      return max(,mul)])

    for i in range(100,1000):
      if sum() == i:
            return i

if __name__ == '__main__':
    print(fun158())

lf倩 发表于 2018-3-1 10:18:34

for i in range(100,999,1):
    a=str(i)#把三位数变成字符串
    sum=0
    for each in a:
      b=int(each)#把三位数的各位数字列出来并依次赋值给b
      c=1
      while b>0: #使用循环求数字b的阶乘c
            c=c*b
            b-=1
      sum+=c#求各位数字阶乘c的和
    if i==sum:
      print(i)
   

629317xyh 发表于 2018-3-1 10:51:07

为啥看不到别人的答案啊

JessiFly 发表于 2018-3-1 10:56:24

本帖最后由 JessiFly 于 2018-3-1 10:57 编辑

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

for i in range(100,1000):
    sum = 0
    temp = i
    while temp:
      sum += fact(temp%10)
      temp //= 10
    if sum == i:
      print(i)

lyjlyj 发表于 2018-3-1 10:56:30

本帖最后由 lyjlyj 于 2018-3-1 10:57 编辑

#coding=utf-8
'''求三位数中,其值等于各位数的阶乘之和'''
#求阶乘
def factorial(n):
    sum = 1
    for i in range(1,n+1):
      sum *= i
    return sum

for num in range(100,1000):
    num_list = #分离num
    sum = factorial(num_list)+factorial(num_list)+factorial(num_list)#求和
    #print (sum,num)
    if num == sum:
      print (num)
页: 1 [2] 3 4
查看完整版本: Python:每日一题 158