希望各位大佬能帮我解决这两道题
这是我老师给我布置的一个拔高题 但我搞不明白怎么写 希望各位大神能用Python写出来 教我一下1,编写一个程序,找出1-30内的所有素数,并对这些素数进行从大到小的排序,然后输出排序后的素数,最后返回素数的个数。
(素数说明:指在大于1的自然数中,除了1和该数自身之外,无法被其他自然数整除的数)
2, 编写一个程序解决以下这个数学问题:小明过年时收到了若干压岁钱,当天花掉了一半,还不过瘾,又多花了一块钱。第二天早上又将剩下的钱花掉一半,然后又多花了一块钱。 以后每一天都花了前一天剩下钱的一半多一块。到第10天早上再花时,小明发现只剩下最后一块钱了。求小明共收到了多少压岁钱?
【第1题】
#-*-coding:gbk-*-
import math
d = []
for x in range(1 , 31):
if x > 1:
for k in range(2 , int(math . sqrt(x)) + 1):
if k < x and not (x % k) :
break
else :
d . insert(0 , x)
print('1 - 30 之间一共有 ' , len(d) , '个素数')
print(d , end = '')
for k in range(1 , len(d)):
print(' ' , d , end = '')
print()
【第2题】:
s = 1
for k in range(9):
s = (s + 1) * 2
print(s)
答案是,小明一共收到了 1534 元 "压岁钱" 学艺不精,不是很会用库,所以琢磨了一个不用库的办法,提供一个思路。所以比较啰嗦,没有效率,搞了4个列表。
num1 = []
num2 = []
num3 = []
num4 = []
# 产生一个列表num1,包含1-30
for k in range(1,31):
num1.append(k)
# 复制一个列表num2,用来最后剔除不是素数都数
num2 = num1[:]
# 复制一个列表num3,用来进行判断一个数是否素数
num3 = num1[:]
# 在num3中,从第一个大于1的数开始循环
for m in num3:
if m > 1:
# 第二个循环,循环目标是num3[:m],意思是从1开始到m自身(例如:m=5,num3[:5]
# 就是
for n in num3[:m]:
# 该print用于验证m、n的对应关系
# print('m=',m,'n=',n)
# m and n 求余,是否=0,=0是整除
if m % n == 0:
# 本句用于标记,方便查看,可以删除
print(m,'这个数可以被',n,'整除')
# 如果n不是m自身一样的数
if n != m:
# 如果n不是等于1,此2句if判断是否素数
if n != 1:
# 用于标记,方便查看,可以删除
print(m,'不是素数')
# 将所有不是素数的数方在num4这个列表
num4.append(m)
# 列表num4包含了所有非素数的数,但是因为是循环,所以有很多重复项
# print(num4)
# 通过把列表num4中的数全部循环在列表num2中剔除的方法,把num2中的非素数全部剔除
for k in num4:
if k in num2:
num2.remove(k)
# 根据素数定义,要大于1,而num2中原本包含1,需要剔除
num2.remove(1)
# 输出最后答案
print(num2) jackz007 发表于 2020-10-3 12:01
【第1题】
【第2题】:
请问第二题你能不能简单描述一下那段代码的意思 yaotaoism 发表于 2020-10-3 21:25
学艺不精,不是很会用库,所以琢磨了一个不用库的办法,提供一个思路。所以比较啰嗦,没有效率,搞了4个列 ...
谢谢你 你这个虽然复杂 但很基础
页:
[1]