鱼C论坛

 找回密码
 立即注册
查看: 959|回复: 3

[已解决]python 新手,不熟悉,请教大佬们

[复制链接]
发表于 2018-9-23 13:36:57 | 显示全部楼层 |阅读模式

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

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

x
验证歌德巴赫猜想:任何一个大于6的偶数均可以表示
   为两个素数之和;
     6=3+3; 8=3+5;…18=7+11;
要求:将6-100之间的偶数都表示成两个素数之和,打印时每行打印5组
最佳答案
2018-9-23 14:09:48
本帖最后由 塔利班 于 2018-9-23 14:15 编辑
  1. L=list(range(2,100))
  2. T=[]
  3. while L:
  4.     T.append(L.pop(0))
  5.     L=[x for x in L if x%T[-1]]
  6. c=0
  7. def fun(e):
  8.     t=[y for y in T if e>=y+2]
  9.     for i in t:
  10.         if e-i in t:
  11.             return f'{e}={i}+{e-i}'
  12. for e in range(6,101,2):
  13.     print(fun(e),end=' ')
  14.     c+=1
  15.     if not c%5:
  16.         print()
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-23 14:08:27 From FishC Mobile | 显示全部楼层
可以先生成出一个素数列表,
然后用这个数减去列表里的每一个数,
如果差in列表就OK了,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-23 14:09:48 | 显示全部楼层    本楼为最佳答案   
本帖最后由 塔利班 于 2018-9-23 14:15 编辑
  1. L=list(range(2,100))
  2. T=[]
  3. while L:
  4.     T.append(L.pop(0))
  5.     L=[x for x in L if x%T[-1]]
  6. c=0
  7. def fun(e):
  8.     t=[y for y in T if e>=y+2]
  9.     for i in t:
  10.         if e-i in t:
  11.             return f'{e}={i}+{e-i}'
  12. for e in range(6,101,2):
  13.     print(fun(e),end=' ')
  14.     c+=1
  15.     if not c%5:
  16.         print()
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
RIXO + 5 + 5 + 3 这个方法很厉害啊!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-9-23 15:13:17 | 显示全部楼层

谢谢,主要是我这学期才学,只上了几节课,选的选修,没接触过,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-14 01:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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