输入一个整数m。判断是否为素数

img


为什么程序执行错误?,原有的flag等于true。为什么执行不了

img


import math
m = int(input("请输入一个整数(>1):"))
k = int(math.sqrt(m))
flag = True
for i in range(2, k+2):
  if (m % i == 0): flag = False
  else: i += 1
if (flag == True)and m>1: print(m, "是素数!")
else: print(m, "是合数!")

img

  • 这篇博客: 湖南大学操作系统导论课程作业中的 是否按预期工作?它会产生正确的结果吗?使用-M 和-R 标志跟踪变量和寄存器(并使用-c 查看它们的值)。你能预测代码运行时 flag 最终会变成什么值吗? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里插入图片描述
    flag.s会按预期工作,线程0先运行,并且进程上下文切换前运行完成。之后线程1才开始运行,没有出现多个线程同时访问临界区的情况,所以预测其会产生正确的结果。
    count:线程0和线程1分别进行了一次+1操作。
    flag最终会被线程1在1007处设置为0。

    在这里插入图片描述