Python 通过删减因数的方法界定质数

设定一个function

先输入一数据上限n,再输入一实数f,

假设一序列由1,2,3...n。  如果序列中的任何一个数的因数含有 , 则把这个数移出序列,但是并不移出数据 本身。

输出序列中剩下的数据。

(例如数据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)))