【发布时间】:2019-07-24 14:42:01
【问题描述】:
按照维基百科上的伪代码,我编写了一些代码来显示 2 和用户选择的数字之间的质数。我不确定为什么这不起作用,因为我在 Erastothenes 的筛子之后的增量是正确的。请帮帮我。
我尝试过更改边界,但这不起作用。
没有错误,但它返回错误的输出。如果我输入 10,它会返回 2、3、4、5、6、7、8、9、10。
n=input("Enter an upper limit: ");
nums= 2:n;
p=2;
for i = p:sqrt(n)
for j = (i^2):i:sqrt(n)
nums(j) = 0;
end
end
for k = 1:n-1
if nums(k) ~= 0
disp(nums(k))
end
end
【问题讨论】:
-
请edit把“不工作”的问题说清楚,结果是不是错了,会不会导致错误,会不会让你的电脑爆炸……?
-
j循环需要一直到n而不是sqrt(n)否则此代码如何检查数字 > sqrt(n) 是否可以除以已经找到的素数? nums 也是从 2 而不是 1 开始的,所以你应该写nums(j-1) = 0;。