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

关于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日

悬赏问题

  • ¥15 人在外地出差,速帮一点点
  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥15 Windows 系统cmd后提示“加载用户设置时遇到错误”
  • ¥50 vue router 动态路由问题
  • ¥15 关于#.net#的问题:End Function
  • ¥15 无法import pycausal
  • ¥15 VS2022创建MVC framework提示:预安装的程序包具有对缺少的注册表值的引用
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义
  • ¥15 嵌入式--定时器使用