Я пытаюсь написать программу на языке matlab, такую, чтобы сумма обратных значений n первых простых чисел превышала заданное значение k.Чтобы прояснить, я пытаюсь сделать функцию
SumPrime (k)
И она должна вернуть целое число n такое, что
\sum_{i=1}^{n} 1/p_i > k
суммаиз простых чисел и их взаимных и сюжет в Matlab?
Я пытался посмотреть здесь, но это не совсем отвечает на мой вопрос.Так же как и команда
sumInversePrimes = sum(1./primes(n));
Вот моя попытка.Сначала я определяю функцию для нахождения n-го простого числа.
function Y = NthPrime(n)
if n==1
Y = 2;
return
end
if n < 1 || round(n)~=n
return
end
j = 2;
u = 0;
while u < n
T = primes(j);
u = numel(T);
j = 1 + j;
end
Y = T(numel(T));
После выполнения этого (длинного?) Кода для нахождения n-го простого числа, остальное - прогулочный ход.
function Y = E(u)
sum = 0
n = 0
while sum < u
n = n + 1
sum = sum + 1/( NthPrime(n) )
end
Y = n;
Вернуть правильные значения.Это несколько работает.Увы, это очень медленно, и я думаю, что это очень плохой код.Я только начал изучать кодирование в matlab. Может ли кто-нибудь помочь мне написать лучший код или оптимизировать мой?
XOXOXOX
Nebby