造两个函数
找出800-1200之间所有符合以下条件的数:该数的各位数字的阶乘和为素数。按如下格式打印出所有符合条件的数:807:8!+0!+7!=45361
817:8!+1!+7!=45361
870:8!+7!+0!=45361
871:8!+7!+1!=45361
1002:1!+0!+0!+2!=5
1012:1!+0!+1!+2!=5
1020:1!+0!+2!+0!=5
…………
程序中包含两个函数,分别用于实现判断素数和计算阶乘。
怎么做出判断素数和做阶乘的函数??? 本帖最后由 wp231957 于 2021-4-4 19:25 编辑
是这个意思吗?
import math
def isfrime(n):
for x in range(2,int(math.sqrt(n)+1)):
if n % x==0:
return False
return True
def jc(n):
t=1
for x in range(1,n+1):
t*=x
return t
for x in range(800,1201):
lst=list(str(x))
num=sum()
if isfrime(num):
print(x,":",end="")
for z in lst[:-1]:
print(z,"!","+",end="")
print(lst[-1],"!=%d"%num)
PS E:\wp> py test5.py
807 :8 ! +0 ! +7 !=45361
817 :8 ! +1 ! +7 !=45361
870 :8 ! +7 ! +0 !=45361
871 :8 ! +7 ! +1 !=45361
1002 :1 ! +0 ! +0 ! +2 !=5
1012 :1 ! +0 ! +1 ! +2 !=5
1020 :1 ! +0 ! +2 ! +0 !=5
1021 :1 ! +0 ! +2 ! +1 !=5
1102 :1 ! +1 ! +0 ! +2 !=5
1112 :1 ! +1 ! +1 ! +2 !=5
1120 :1 ! +1 ! +2 ! +0 !=5
1121 :1 ! +1 ! +2 ! +1 !=5
1200 :1 ! +2 ! +0 ! +0 !=5
PS E:\wp> 学习一下{:10_275:} wp231957 发表于 2021-4-4 19:11
是这个意思吗?
大佬 有没有大佬解释下造第一个函数时为啥范围写到数的平方 输入n 对他的 1到n求余不成立那不就直接输出是素数了 往后面求都一样为啥要写到平方 9797nobean 发表于 2021-4-5 10:42
有没有大佬解释下造第一个函数时为啥范围写到数的平方 输入n 对他的 1到n求余不成立那不就直接输出是 ...
是平方根不是平方
主要是节省一半的循环次数 wp231957 发表于 2021-4-5 13:21
是平方根不是平方
主要是节省一半的循环次数
是的,节省时间,而且节省的并不是一半,而是远远小于一半,比如说 10000 ,平方是 100,一半是5000,差着几何倍数呢! qq1151985918 发表于 2021-4-5 15:01
是的,节省时间,而且节省的并不是一半,而是远远小于一半,比如说 10000 ,平方是 100,一半是5000,差 ...
有道理,我还一直以为是一半呢
页:
[1]