如何将for循环与range输出转为列表并仅展示符合要求的质数内容?
代码修改方案
直接运行以下代码即可匹配你的预期输出:
def display_prime_numbers(maximum): # 输入合法性校验 if maximum <= 2: print('Enter Number Greater Than 2') return # 生成目标区间列表并打印 num_list = list(range(2, maximum + 1)) print(num_list) print() # 逐个判断质数并输出 for num in num_list: # 若需要将2纳入质数输出,删除下一行的continue,添加打印2的逻辑即可 if num == 2: continue is_prime = True # 仅校验到平方根即可,减少不必要运算 for i in range(2, int(num ** 0.5) + 1): if num % i == 0: is_prime = False break if is_prime: print(f'{num} is a prime number') # 调用逻辑 if __name__ == "__main__": input_num = int(input("Enter Positive Integer Greater Than 2:")) display_prime_numbers(input_num)
核心修改点
- 替换原代码循环逐个打印range元素的逻辑,直接用
list()将range对象转为列表,打印后自动匹配你需要的方括号包裹的列表格式。 - 重构质数判断逻辑:原代码仅对range的最后一个值做校验,改为对区间内每个数字单独校验,符合质数判定规则:大于1的自然数,除了1和自身外不存在其他正因数。
- 补充输入校验后的终止逻辑,避免输入值小于等于2时后续无效代码仍执行。
内容的提问来源于stack exchange,提问作者jump
相关产品推荐
相关产品推荐

