设定一个function
先输入一数据上限n,再输入一实数f,
假设一序列由1,2,3...n。 如果序列中的任何一个数的因数含有 f , 则把这个数移出序列,但是并不移出数据 f 本身。
输出序列中剩下的数据。
(例如数据1,2,3...10, 实数为2, 则输出的数据为:1,2,3,5,7,9)
---------
利用这个function, 输出在1到n的范围内的质数,并计算一共有多少个质数。
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
你的难点是啥呀?
count = 0
n = int(input("请输入n:"))
f = int(input("请输入因数f:"))
for i in range(1, n):
if (i % f != 0 and i != f):
print(i, end = ' ')
count += 1
print()
print("总共有 {} 个".format(count))
像这样?
首先说明一个问题,质数是不包括1的。代码这样写就行了。
def prime_f(n):
L=[]
for i in range(2,n+1):
P=[]
for j in range(2,i):
if (i%j==0): #判断该数是否有因数
P.append(j)
break;
if (len(P)==0): #判断是否为质数
L.append(i)
return "总共有{}个质数,分别是:{}".format(len(L),L)
prime_f(10)
输出:
总共有4个质数,分别是:[2, 3, 5, 7]
# 定义函数
def pl(li,f):
# x大于f,并且因数含有 f 移出序列,由于列表推导式 if为真是保留,所以加not取反。
return [x for x in li if not (x>f and x%f==0)]
# 测试函数 数据1,2,3...10, 实数为2,
n = 10
f = 2
li = list(range(1,n+1))
li = pl(li,f)
print("测试函数:",li)
# 输出在1到n的范围内的质数,并计算一共有多少个质数。
n = 100
li = list(range(2,n+1)) #1不是质数,所以列表从2开始
for f in range(2,n):
li = pl(li,f) #循环调用这个函数计算质数
print("质数:",li)
print("一共有{}个质数".format(len(li)))
# 定义函数
def pl(li,f):
# x大于f,并且因数含有 f 移出序列,由于列表推导式 if为真是保留,所以加not取反。
return [x for x in li if not (x>f and x%f==0)]
# 测试函数 数据1,2,3...10, 实数为2,
n = 10
f = 2
li = list(range(1,n+1))
li = pl(li,f)
print("测试函数:",li)
# 输出在1到n的范围内的质数,并计算一共有多少个质数。
n = 100
li = list(range(2,n+1)) #1不是质数,所以列表从2开始
for f in range(2,n):
li = pl(li,f) #循环调用这个函数计算质数
print("质数:",li)
print("一共有{}个质数".format(len(li)))