该程序坚持认为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
答案 0 :(得分:2)
您未在denom
案例中重置%
。
if num%denom==0 then
num=num+1
else
因此,当您完成此测试时,您将开始测试从前一分母开始而不是再次从2
开始的下一个数字。
简单调试打印输出denom
和num
的循环中的打印行会向您展示(实际上,这正是我发现它的方式)。您只需输入三个素数即可查看问题。
答案 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