循环遍历一个数字多次

时间:2014-04-19 16:56:32

标签: matlab

我想要每个numbas,给出小于或等于numbas的primlist。我的编程为每个numbas做了正确的事情,但是多次。因此,我无法将PPRIMMS保存为PLV向量。

例如,如果您在下面看到numbas = 69的向量不止一次,我只想为每个数字达到100个numbas。这是导致我的程序中的demension不匹配时尝试将PPRIMS保存为PLV。

numbas =

69

PPRIMS =

第1至13栏

 2     3     5     7    11    13    17    19    23    29    31    37    41

第14至26栏

43    47    53    59    61    67     0     0     0     0     0     0     0

numbas =

69

PPRIMS =

第1至13栏

 2     3     5     7    11    13    17    19    23    29    31    37    41

第14至26栏

43    47    53    59    61    67     0     0     0     0     0     0     0

代码:

n=100;
primlist=2; % starting the prime number list


for numba=1:n;
   if mod(2+numba,primlist)~=0
      primlist=[primlist;2+numba]; %generating the prime number list
   end
end


for numbas=2:n
    prims=zeros(size(primlist));
    pprims=zeros(size(primlist));
    pow=prims;
    for k=1:10
        for i=1:length(primlist) % identifying each primes in the primlist
            if mod(numbas,primlist(i).^k)==0
                prims(i)=primlist(i); % sum of all the powers of prims, such that prims divide numbas
                pow(i)=k; % collecting the exponents of primes
            end

            if primlist(i)<=numbas
               pprims(i)=primlist(i);
            end
        end

numbas     
PPRIMS=pprims' % primes less than or equal to numbas   
PRIMS=prims'; % primes that divide numbas
POW=pow'; % highest prower of primes that divide numbas

PPV(numbas,:)=PRIMS; % saving prims
PVE(numbas,:)=POW; % Saving Pows
PLV(numbas.:)=PPRIMS % saving PPRIMS
numbas;


RVE=cumsum(PVE); % the cummulative sum of the exponents of PVE
%RVEC(numbas,:)=RVE

%numbas

%sigmafac=(prod(PPV.^(RVE(numbas)+1)-1))/((prod(PPV-1))) 
end



end                

1 个答案:

答案 0 :(得分:0)

中有一个小错字
PLV(numbas.:)

我认为应该是

PLV(numbas,:)

另外,你的内循环

for k=1:10

没有关闭,其余的代码都在这个循环中,这就是 numbas 打印10次的原因。