嗨姐 发表于 2021-4-4 18:28:55

造两个函数

找出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:11:49

本帖最后由 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)

wp231957 发表于 2021-4-4 19:12:20

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>

媛媛0404 发表于 2021-4-5 00:03:29

学习一下{:10_275:}

Stubborn 发表于 2021-4-5 10:23:57

wp231957 发表于 2021-4-4 19:11
是这个意思吗?

大佬

9797nobean 发表于 2021-4-5 10:42:45

有没有大佬解释下造第一个函数时为啥范围写到数的平方 输入n 对他的   1到n求余不成立那不就直接输出是素数了 往后面求都一样为啥要写到平方

wp231957 发表于 2021-4-5 13:21:07

9797nobean 发表于 2021-4-5 10:42
有没有大佬解释下造第一个函数时为啥范围写到数的平方 输入n 对他的   1到n求余不成立那不就直接输出是 ...

是平方根不是平方
主要是节省一半的循环次数

qq1151985918 发表于 2021-4-5 15:01:21

wp231957 发表于 2021-4-5 13:21
是平方根不是平方
主要是节省一半的循环次数

是的,节省时间,而且节省的并不是一半,而是远远小于一半,比如说 10000 ,平方是 100,一半是5000,差着几何倍数呢!

wp231957 发表于 2021-4-5 18:30:43

qq1151985918 发表于 2021-4-5 15:01
是的,节省时间,而且节省的并不是一半,而是远远小于一半,比如说 10000 ,平方是 100,一半是5000,差 ...

有道理,我还一直以为是一半呢
页: [1]
查看完整版本: 造两个函数