以递归方式生成素数,Matlab

时间:2014-03-13 02:51:18

标签: matlab

我正在尝试使用之前的素数递归生成素数。默认情况下2是素数,每次我继续将1添加到下一个数字并除以前一个素数,例如2 + 1 = 3所以我检查2不分3,所以3是素数所以我存储2和3所以远,接下来将是3 + 1 = 4,我将使用我当前的主要列表2和3,并看到2除以4因此它不进入列表然后我继续4 + 1等等一直向上到了关键是每次除以前的素数,如果达到素数,列表就会更新。请检查我的程序,看看我做错了什么。

这是我的程序到目前为止,但我只是得到3和962,我希望它更新列表并每次循环返回它,所以我每次都可以使用mod(2 + numba,primlist): / p>

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

1 个答案:

答案 0 :(得分:1)

您正在反复初始化primlist。不要那样做。我正在对您的代码进行少量修改以使其正确运行。逻辑基本上是正确的。您只需要在外面初始化primlist

n=960;
primlist=2;
for numba=1:n  %Changed 2 to 1
   if mod(2+numba,primlist)~=0
      primlist=[primlist;2+numba];
   end
end
primlist