我想总结除数字的primlist(primes)的幂(r),并选出使k
除以数字的最大幂(primlist
)。我相信我有正确的概念,但matlab忽略了循环中的某些东西。例如,当numbas = 45时,我们知道3 ^ 2 * 5 = 45因此primlist = 3和5,对于3:k = 2,r = 1,3并且对于5,k = 1,r = 1。 r只是分割numba的primlist的所有幂,而k是r的最高值。我想总结所有的r,并得到最大的r,即k
n=100;
primlist=2;
for numba=1:n;
if mod(2+numba,primlist)~=0
primlist=[primlist;2+numba];
end
end
prims=reshape(primlist.',1,[]);
r=1;
for numbas=2:n
for k=1:10
if mod(numbas,prims.^k)==0
r=r+sum(k) % sum of all the powers of prims, such that prims divide numbas
k=max(k) % greatest power of prims, such that prims divide numbas
end
end
end
numbas
prims
k
r
答案 0 :(得分:0)
我认为这可以满足您的需求。我添加了一个额外的循环来测试素数是否逐个除numbas
,而不是一次性。 r
包含划分numbas
和pow
的素数,其中包含每个素数的相应数字。您可能想要更改结果的保存方式,但我认为这可以为您提供所需的内容。
n=100;
primlist=2;
for numba=1:n;
if mod(2+numba,primlist)~=0
primlist=[primlist;2+numba];
end
end
kMax=0;
for numbas=2:n
r=zeros(size(primlist));
pow=r;
for k=1:10
for i=1:length(primlist)
if mod(numbas,primlist(i).^k)==0
r(i)=primlist(i); % sum of all the powers of prims, such that prims divide numbas
pow(i)=k;
if k>kMax,kMax=k;end % greatest power of prims, such that prims divide numbas
end
end
end
R=r'
POW=pow'
end