Problem in creating a next_prime function
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Danial Amin
le 24 Juil 2020
Commenté : Danial Amin
le 24 Juil 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
0 commentaires
Réponse acceptée
Ferheen Ayaz
le 24 Juil 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
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Startup and Shutdown dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!