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)
难道不是阶乘之和?
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
from math import factorial as f
print()
为什么有些题目后面的回复设置称“此帖仅作者可见”
应该是各位数的阶乘之和吧
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
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)
看下答案
其值等于各位数字的阶乘??是阶乘之和吗?
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就受不了了
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:}
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)
666
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
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
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)
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)
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)
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)
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)
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)
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
>>>