Nested For Loop Equation

1 回表示 (過去 30 日間)
Kevin Krone
Kevin Krone 2019 年 9 月 20 日
コメント済み: thoughtGarden 2019 年 9 月 20 日
I have an array (N) filled with the 25 prime numbers between 1 and one hundred.
And I need to build the equation
x = (((((( (n)^ 99/100 n-1)^ 99/100 )+ n-2)^ 99100 ) +n-3)^99/100 )....+ 1 ^99/100)
and apply to every number in the array.
For example, the 6th prime number is 13, the equation would be
x = ((((13^(99/100)) + 12)^(99/100) +11) ^(99/100) +10)^(99/100)....+1)^99/100 = 63.6
I know this is going to need some sort of nested for loops create the equation.
for i = size(NN,2) % For i = 25
NN(i);
for j = max(NN) % For j = 97
((NN(i)^(99/100))+NN(i)-j)^(99/100)
end
end
This is my initial attempt, any guidance or help would be greatly appreciated.

採用された回答

thoughtGarden
thoughtGarden 2019 年 9 月 20 日
編集済み: thoughtGarden 2019 年 9 月 20 日
Tis quick and dirty, but this work...
clear;clc;
N = primes(100);
newVect = zeros(size(N));
for ii = 1:length(N)
tempSum = 0;
for jj = N(ii):-1:1
tempSum = (tempSum + jj)^(99/100);
end
newVect(ii) = tempSum;
end
disp(newVect)
Update: I changed the variables to match your OP. I also cleaned up by adding preallocation.
As a side note, this seems like something you would want to put into a function... JMHO.
  2 件のコメント
Walter Roberson
Walter Roberson 2019 年 9 月 20 日
MATLAB provides a function for this kind of operation: fold()
thoughtGarden
thoughtGarden 2019 年 9 月 20 日
Thanks for tip about fold(). I've never heard of it, but it does seem useful, especially for this application.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMATLAB についてさらに検索

製品


リリース

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by