Syn_Wll 2022-03-23 17:03 采纳率: 80%
浏览 31
已结题

关于while循环中的质数问题

问题遇到的现象和发生背景

想写个程序判断一个数字是否为质数。

问题相关代码,请勿粘贴截图
num = int(input("请输入一个数字: "))
i = 2

while i < num-1:
    if num % i == 0:
        print("这个数不是质数。")
        break
    else:
        i += 1
    print("这个数是质数。")
    break
运行结果及报错内容

像输入数字为9、27、51这种,就会显示错误。

我的解答思路和尝试过的方法

判断一个数字num是否为质数,只需要遍历2至num-1里是否有数可为其约数。

我想要达到的结果

正常输入一个数字,能够判断这个数字是否为质数。(请务必告知本代码错误地方,和修改代码

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2022-03-23 17:14
    关注

    第10行有误,不能在循环中就判定这个数是质数,必须while循环比较结束后才能确定。
    当循环结束后,如果i值是num,表明2到num-1都不是num的约束,才能说明num是质数
    根据你的代码逻辑,应该判断到i<num。但实际循环最小情况应该是 if i*i <= num :,不需要比较那么多次
    修改如下

    num = int(input("请输入一个数字: "))
    i = 2
    while i < num:
        if num % i == 0:
            print("这个数不是质数。")
            break
        i += 1
    if i==num:
         print("这个数是质数。") 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日
  • 创建了问题 3月23日