[英]Sum numbers and finding maximum, Matlab
我想对原始列表(素数)的除数的幂 (r) 求和,并找出使primlist
的最大幂 ( k
)。 我相信我有正确的概念,但 matlab 忽略了循环中的某些内容。 例如当 numbas=45 时,我们知道 3^2*5=45 所以 primlist = 3 和 5,对于 3:k=2, r=1,3 和对于 5,k=1, r=1。 r 只是将 numba 分开的原始列表的所有幂,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
我认为这可以满足您的要求。 我添加了一个额外的循环来测试素数是否将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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.