Borrar filtros
Borrar filtros

Problem in creating a next_prime function

2 visualizaciones (últimos 30 días)
Danial Amin
Danial Amin el 24 de Jul. de 2020
Comentada: Danial Amin el 24 de Jul. de 2020
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

Respuesta aceptada

Ferheen Ayaz
Ferheen Ayaz el 24 de Jul. de 2020
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 comentario
Danial Amin
Danial Amin el 24 de Jul. de 2020
Thank you. Probably I just needed some break in my coding sessions and some coffee. Cheers.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Programming en Help Center y File Exchange.

Productos


Versión

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by