我想要每个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
答案 0 :(得分:0)
中有一个小错字
PLV(numbas.:)
我认为应该是
PLV(numbas,:)
另外,你的内循环
for k=1:10
没有关闭,其余的代码都在这个循环中,这就是 numbas 打印10次的原因。