编写输入N个数的质数判断程序(需用函数)无输出问题求助
问题分析与修复方案
嘿,我来帮你排查下代码为啥没输出还逻辑混乱的问题~你的代码里有几个关键的逻辑错误,导致程序根本没法正常运行:
核心问题点
- 函数定义位置错误+递归滥用:你把
isPrime函数定义在了for循环内部,而且函数里还递归调用了自己(a = isPrime(int(input()))),这会导致每次循环都重新定义函数,还会无限触发输入请求,完全偏离了“输入N个数字逐个判断”的需求。 - 无效的判断逻辑:主代码里的
if False:是恒假条件,不管怎样都会走else打印"YES",而且你根本没调用isPrime函数去检查输入的数字,等于判断逻辑完全没生效。 - 输入流程混乱:原本应该先输入N,再输入N个数字,但你的代码在函数内部触发输入,导致输入顺序完全乱套。
修复后的代码
def isPrime(n): # 处理特殊情况 if n == 2 or n == 3: return True if n < 2 or n % 2 == 0: return False # 从3开始,只检查奇数,到平方根为止 for i in range(3, int(n**0.5) + 1, 2): if n % i == 0: return False return True # 先输入要判断的数字个数N count = int(input()) # 循环N次,逐个处理输入的数字 for _ in range(count): num = int(input()) if isPrime(num): print("YES") else: print("NO")
代码说明
- 函数独立定义:把
isPrime函数放在最外层,只定义一次,专注做质数判断的单一功能。 - 清晰的输入流程:先输入数字个数
count,然后循环count次,每次输入一个数字,调用isPrime判断结果后输出对应的YES/NO。 - 正确的质数判断逻辑:保留了你原本正确的质数判断逻辑,去掉了无效的递归调用,确保每个输入的数字都能被正确检查。
内容的提问来源于stack exchange,提问作者Thế Hiển Nguyễn
相关产品推荐
相关产品推荐

