How to use if-function for arithmetic properties properly?
Afficher commentaires plus anciens
Hello everyone,
Im working on a project about the Ramanujans qth summation containing elements of signal processing. I try to simulate the entire formula via matlab yet Im not capable of finishing the if function with all the 3 properties (see picture) of the arithmetic theorem. This is my best attempt....
q = 12
primesfactorization = factor((q))
numbers=hist(primesfactorization, unique(primesfactorization));
m1 = numbers(1,1);
m2 = numbers(1,2);
p1=(primesfactorization(1,1)^m)
p2=primesfactorization(1,3)
XX Something is missing here, asking if p1 is a prime number then
if (q1)== mrdivide(q1,k)
q1 = q1-1
else(q1)~= mrdivide(q1,k)
q1 = -1
end
or p1= p^m for p is a prime and m<1 then
.....
Réponses (1)
David Hill
le 3 Juin 2020
If you are trying to comute the ramanujan sum it should be something like this:
function s = ramanujanSum(a,n)
f=factor(a);
s=1;
for k=unique(f)
b=nnz(f==k);
if b==1
if mod(n,k)==0
s=s*(k-1);
else
s=-s;
end
elseif gcd(k^(b-1),n)==1
s=0;
return;
elseif gcd(k^b,n)==1
s=s*(-k^(b-1));
else
s=s*k^(b-1)*(k-1);
end
end
1 commentaire
David Hill
le 3 Juin 2020
My code is generating the qth sum at n.
function c = ramanujanSum(q,n)
f=factor(q);
c=1;
for k=unique(f)
b=nnz(f==k);%exponent of prime factor
if b==1
if mod(n,k)==0
c=c*(k-1);
else
c=-c;
end
elseif gcd(k^(b-1),n)==1
c=0;
return;
elseif gcd(k^b,n)==1
c=c*(-k^(b-1));
else
c=c*k^(b-1)*(k-1);
end
end
Catégories
En savoir plus sur Audio and Video Data dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!