繁体   English   中英

求和数并找到最大值,Matlab

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM