Python 界定因数

 

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

假设一序列由1,2,3...n。  如果序列中的任何一个数的因数含有f, 则把这个数移出序列。

输出序列中剩下的数据。

 

重复上述步骤,直到输入-1

 

请问这段代码应该怎么实现?

while(1):
	n = int(input("请输入n:"))
	if (n == -1):
		break;
	
	f = int(input("请输入因数f:"))
	for i in range(1, n):
		if (i % f != 0):
			print(i, end = ' ')
			
	print()
	

你看看这样呢

你的难点在哪里呢?是判断因数?还是移除?还是一直重复步骤呢?

如下:

# 定一个函数func,函数的入参是序列的最大值n和因数f
def func(n, f):
    # 创建一个空列表
    list_n = []
    # 把1到n的数据装入列表
    for i in range(1,n+1):
        list_n.append(i)
    # 遍历整个列表
    for j in list_n:
        # 如果f是j的因数,则把他从列表中删除
        if j%f == 0:
            list_n.remove(j)
    # 打印处理后的列表
    print(str(list_n))

# 执行函数
func(11,2)

 

写法很多,下面的代码仅供参考。

>>> def remove_factor():
	n = int(input('请输入数据上限:'))
	nums = list(range(1, n+1))
	while True:
		f = int(input('请输入因子(-1表示结束):'))
		if f == -1:
			print('结束')
			break
		nums = list(filter(lambda x:x%f>0, nums))
		print(nums)

		
>>> remove_factor()
请输入数据上限:10
请输入因子(-1表示结束):3
[1, 2, 4, 5, 7, 8, 10]
请输入因子(-1表示结束):2
[1, 5, 7]
请输入因子(-1表示结束):-1
结束

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632