鱼C论坛

 找回密码
 立即注册
查看: 2010|回复: 8

造两个函数

[复制链接]
发表于 2021-4-4 18:28:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
找出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

…………

程序中包含两个函数,分别用于实现判断素数和计算阶乘。



怎么做出判断素数和做阶乘的函数???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-4 19:11:49 | 显示全部楼层
本帖最后由 wp231957 于 2021-4-4 19:25 编辑

是这个意思吗?
  1. import math

  2. def isfrime(n):
  3.     for x in range(2,int(math.sqrt(n)+1)):
  4.         if n % x==0:
  5.             return False
  6.     return True   
  7.         
  8. def jc(n):
  9.     t=1
  10.     for x in range(1,n+1):
  11.         t*=x
  12.     return t   

  13. for x in range(800,1201):
  14.     lst=list(str(x))
  15.     num=sum([jc(int(s)) for s in lst])
  16.     if isfrime(num):
  17.         print(x,":",end="")
  18.         for z in lst[:-1]:
  19.             print(z,"!","+",end="")
  20.         print(lst[-1],"!=%d"%num)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 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>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 00:03:29 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 10:23:57 | 显示全部楼层
wp231957 发表于 2021-4-4 19:11
是这个意思吗?

大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 10:42:45 From FishC Mobile | 显示全部楼层
有没有大佬解释下造第一个函数时  为啥范围写到数的平方 输入n 对他的   1到n求余不成立  那不就直接输出是素数了 往后面求都一样为啥要写到平方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

是平方根不是平方
主要是节省一半的循环次数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 15:01:21 | 显示全部楼层
wp231957 发表于 2021-4-5 13:21
是平方根不是平方
主要是节省一半的循环次数

是的,节省时间,而且节省的并不是一半,而是远远小于一半,比如说 10000 ,平方是 100,一半是5000,差着几何倍数呢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-5 18:30:43 From FishC Mobile | 显示全部楼层
qq1151985918 发表于 2021-4-5 15:01
是的,节省时间,而且节省的并不是一半,而是远远小于一半,比如说 10000 ,平方是 100,一半是5000,差 ...

有道理,我还一直以为是一半呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-13 07:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表