鱼C论坛

 找回密码
 立即注册
查看: 2309|回复: 4

[已解决]希望各位大佬能帮我解决这两道题

[复制链接]
发表于 2020-10-3 11:15:39 | 显示全部楼层 |阅读模式

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

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

x
这是我老师给我布置的一个拔高题 但我搞不明白怎么写 希望各位大神能用Python写出来 教我一下
1,编写一个程序,找出1-30内的所有素数,并对这些素数进行从大到小的排序,然后输出排序后的素数,最后返回素数的个数。
(素数说明:指在大于1的自然数中,除了1和该数自身之外,无法被其他自然数整除的数)


2, 编写一个程序解决以下这个数学问题:小明过年时收到了若干压岁钱,当天花掉了一半,还不过瘾,又多花了一块钱。第二天早上又将剩下的钱花掉一半,然后又多花了一块钱。 以后每一天都花了前一天剩下钱的一半多一块。到第10天早上再花时,小明发现只剩下最后一块钱了。求小明共收到了多少压岁钱?
最佳答案
2020-10-3 12:01:22
    【第1题】
  1. #-*-coding:gbk-*-
  2. import math
  3. d = []
  4. for x in range(1 , 31):
  5.     if x > 1:
  6.         for k in range(2 , int(math . sqrt(x)) + 1):
  7.             if k < x and not (x % k) :
  8.                 break
  9.         else :
  10.             d . insert(0 , x)
  11. print('1 - 30 之间一共有 ' , len(d) , '个素数')
  12. print(d[0] , end = '')
  13. for k in range(1 , len(d)):
  14.     print('        ' , d[k] , end = '')
  15. print()
复制代码

【第2题】:
  1. s = 1
  2. for k in range(9):
  3.     s = (s + 1) * 2
  4.     print(s)
复制代码

    答案是,小明一共收到了 1534 元 "压岁钱"
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-3 12:01:22 | 显示全部楼层    本楼为最佳答案   
    【第1题】
  1. #-*-coding:gbk-*-
  2. import math
  3. d = []
  4. for x in range(1 , 31):
  5.     if x > 1:
  6.         for k in range(2 , int(math . sqrt(x)) + 1):
  7.             if k < x and not (x % k) :
  8.                 break
  9.         else :
  10.             d . insert(0 , x)
  11. print('1 - 30 之间一共有 ' , len(d) , '个素数')
  12. print(d[0] , end = '')
  13. for k in range(1 , len(d)):
  14.     print('        ' , d[k] , end = '')
  15. print()
复制代码

【第2题】:
  1. s = 1
  2. for k in range(9):
  3.     s = (s + 1) * 2
  4.     print(s)
复制代码

    答案是,小明一共收到了 1534 元 "压岁钱"
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-10-3 21:25:14 | 显示全部楼层
学艺不精,不是很会用库,所以琢磨了一个不用库的办法,提供一个思路。所以比较啰嗦,没有效率,搞了4个列表。
  1. num1 = []
  2. num2 = []
  3. num3 = []
  4. num4 = []

  5. # 产生一个列表num1,包含1-30
  6. for k in range(1,31):
  7.     num1.append(k)
  8. # 复制一个列表num2,用来最后剔除不是素数都数
  9. num2 = num1[:]
  10. # 复制一个列表num3,用来进行判断一个数是否素数
  11. num3 = num1[:]

  12. # 在num3中,从第一个大于1的数开始循环
  13. for m in num3:
  14.     if m > 1:
  15.         # 第二个循环,循环目标是num3[:m],意思是从1开始到m自身(例如:m=5,num3[:5]
  16.         # 就是[1,2,3,4,5]
  17.         for n in num3[:m]:
  18.             # 该print用于验证m、n的对应关系
  19.             # print('m=',m,'n=',n)

  20.             # m and n 求余,是否=0,=0是整除
  21.             if m % n == 0:
  22.                 # 本句用于标记,方便查看,可以删除
  23.                 print(m,'这个数可以被',n,'整除')
  24.                 # 如果n不是m自身一样的数
  25.                 if n != m:
  26.                     # 如果n不是等于1,此2句if判断是否素数
  27.                     if n != 1:
  28.                         # 用于标记,方便查看,可以删除
  29.                         print(m,'不是素数')
  30.                         # 将所有不是素数的数方在num4这个列表
  31.                         num4.append(m)
  32. # 列表num4包含了所有非素数的数,但是因为是循环,所以有很多重复项                        
  33. # print(num4)

  34. # 通过把列表num4中的数全部循环在列表num2中剔除的方法,把num2中的非素数全部剔除
  35. for k in num4:
  36.     if k in num2:
  37.         num2.remove(k)

  38. # 根据素数定义,要大于1,而num2中原本包含1,需要剔除
  39. num2.remove(1)

  40. # 输出最后答案
  41. print(num2)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-6 13:11:36 | 显示全部楼层
jackz007 发表于 2020-10-3 12:01
【第1题】

【第2题】:

请问第二题你能不能简单描述一下那段代码的意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-6 13:13:22 | 显示全部楼层
yaotaoism 发表于 2020-10-3 21:25
学艺不精,不是很会用库,所以琢磨了一个不用库的办法,提供一个思路。所以比较啰嗦,没有效率,搞了4个列 ...

谢谢你 你这个虽然复杂 但很基础
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 20:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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