江湖散人 发表于 2021-3-25 20:59:55

程序运行问题

def showmaxfactor(num):
    count = num // 2
    while count > 1:
      if num % count == 0:
            print('%d最大的约数是%d:'%(num,count))
      count -= 1
    else:
      print('%d是素数!'% num)



num = int(input('请输入一个数:'))
showmaxfactor(num)



运行结果是:
               请输入一个数:25
               25最大的约数是5:
               25是素数!


这个程序出了什么问题?哪位大神帮忙解答一下啊?

591821661 发表于 2021-3-25 21:08:51

判断素数应该写在while循环外 只有当所有数都遍历过 没有约数,这个数才是素数~

591821661 发表于 2021-3-25 21:16:00

【已经验证通过】看样子您是只需要查询最大约数,帮你改了~

def showmaxfactor(num):
    count = num // 2
    flag = 1;
    while count > 1:
      if num % count == 0:
            print('%d最大的约数是%d:'%(num,count))
            flag = 0;
            break
      count -= 1
   
    if flag:
      print('%d是素数!'% num)
    else:
      print('%d不是素数!'% num)



num = int(input('请输入一个数:'))
showmaxfactor(num)

江湖散人 发表于 2021-3-25 22:32:09

591821661 发表于 2021-3-25 21:16
【已经验证通过】看样子您是只需要查询最大约数,帮你改了~

谢谢你啊,我知道在哪出问题了,While循环里,少了一个break,只要找到最大约数就直接退出,不会再执行else的语句了。
页: [1]
查看完整版本: 程序运行问题