程序中计算素数的行为不正确

时间:2014-09-08 19:16:59

标签: lua

该程序坚持认为35是素数,即使逐步完成,程序达到计算35%5的点,然后忽略该数字(因为结果是0.)我没有检查过每一个数字,但它似乎只显示素数(除了与35相似的数字,如135.)

print ('How many prime numbers do you require?')
primes = io.read("*n")

print ('Here you go:')

num,denom,num_primes=2,2,0

while num_primes<primes do
   if denom<num then
      if num%denom==0 then
         num=num+1
      else
         denom=denom+1
      end
   else
      print(num)
      num=num+1
      num_primes=num_primes+1
      denom=2
   end
end

示例输出:

  How many prime numbers do you require?
  50
  Here you go:
  2
  3
  5
  7
  11
  13
  17
  19
  23
  27
  29
  31
  35
  37
  41
  43
  47
  53
  59
  61
  67
  71
  73
  79
  83
  87
  89
  95
  97
  101
  103
  107
  109
  113
  119
  123
  127
  131
  135
  137
  139
  143
  147
  149
  151
  157
  163
  167
  173
  179

2 个答案:

答案 0 :(得分:2)

您未在denom案例中重置%

if num%denom==0 then
    num=num+1
else

因此,当您完成此测试时,您将开始测试从前一分母开始而不是再次从2开始的下一个数字。

简单调试打印输出denomnum的循环中的打印行会向您展示(实际上,这正是我发现它的方式)。您只需输入三个素数即可查看问题。

答案 1 :(得分:0)

修复此问题,在denom=2

之后设置num=num+1
    print ('How many prime numbers do you require?')
primes = io.read("*n")

print ('Here you go:')

num,denom,num_primes=2,2,0

while num_primes<primes do
   if denom<num then
      if num%denom==0 then
         num=num+1
         denom=2
      else
         denom=denom+1
      end
   else
      print(num)
      num=num+1
      num_primes=num_primes+1
      denom=2
   end
end