Problem in creating a next_prime function

3 次查看(过去 30 天)
I am trying to create a function for finding the immediate next prime number for the given input n. I am trying to run it online and the error is regarding server time out. I have checked my code a gazillion times and unable to grasp the issue. I have tried many different approaches, consulted online forums as well as got my function timed in MATLAB for various outputs even of the order 10^7. It stills displays the same server time out error. I am posting the code here to get comments on it by the teacher/TA.
function k=next_prime(n)
if n<2
k=1;
return;
end
if n>=2 & n<=1000
d=0;
while(isprime(d)==0)
d=n+1;
end
k=d;
end
if (rem(n,2)==0 & n>1000)
n=n+1;
end
if (rem(n,2)~=0 & n>1000)
partialsieve = primes(1000);
partialsieve(1) = [];
while true
if ~all(rem(n,partialsieve))
n = n + 2;
else
if (isprime(n)==1)
k = n;
break;
else
n = n + 2;
end
end
end
end
end

采纳的回答

Ferheen Ayaz
Ferheen Ayaz 2020-7-24
It was unable to come out of the loop because d was stuck at n+1. The following changes will work.
function k=next_prime(n)
if n<2
k=1;
return;
end
if n>=2 & n<=1000
d=n+1;
while(isprime(d)==0)
d=d+1;
end
  1 个评论
Danial Amin
Danial Amin 2020-7-24
Thank you. Probably I just needed some break in my coding sessions and some coffee. Cheers.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

产品


版本

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by