【发布时间】:2014-04-29 00:31:04
【问题描述】:
我正在尝试使用以前的素数递归地生成素数。 2 默认情况下是素数,每次我不断将 1 添加到下一个数字并除以之前的素数,例如 2+1=3 所以我检查 2 不除以 3 所以 3 是素数所以我存储 2 和 3 所以远,接下来是 3+1=4,我将使用我当前的素数列表 2 和 3,并看到 2 除以 4,因此它不会进入列表然后我继续使用 4+1,依此类推到 n。关键是每次除以先前的素数,如果达到素数,则更新列表。请检查我的程序,看看我做错了什么。
到目前为止,这是我的程序,但我只得到 3 和 962,我希望它更新列表并每次循环引用它,这样我每次都可以使用 mod(2+numba,primlist):
n=960;
primlist=[];
for numba=2:n
if mod(2+1,2)~=0
primlist=2+1;
end
if mod(2+numba,primlist)~=0
primlist=[primlist;2+numba];
end
end
primlist
【问题讨论】:
-
好吧,
mod(2+1, 2)始终是mod(3, 2),它是 1,永远不是 0。这是作业吗? -
不,这不是家庭作业,这是为了研究。 mod(2+1,2) 是列表的起点,如果这是一个正确的词,所以从那时起,我每次都使用当前的 primlist 来获取更新的 primlist,这就是为什么你会看到 mod(2+ numba,primlist) 因为 2+numba 总是大于 3。
-
我试图表达的观点是帕拉格在他们的回答中提出的观点。我试图引导你理解(我问的原因是这种寻找素数的方式是一个常见的家庭作业问题,然后我不会给出直接的答案,而是给出提示,这里很标准)。跨度>
-
在命令窗口中输入
edit primes。 -
哦,不,不,哈哈,没有作业,我只是在做数学研究,我的教授告诉我,生成素数比使用内置函数更有效。我将使用素数来计算各种数字的 diviosr 函数。但是感谢您的关注;)
标签: matlab