求和数并找到最大值,Matlab

时间:2014-03-24 03:16:08

标签: matlab

我想总结除数字的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

1 个答案:

答案 0 :(得分:0)

我认为这可以满足您的需求。我添加了一个额外的循环来测试素数是否逐个除numbas,而不是一次性。 r包含划分numbaspow的素数,其中包含每个素数的相应数字。您可能想要更改结果的保存方式,但我认为这可以为您提供所需的内容。

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