Write a function used to list primes

8 views (last 30 days)
Ruihan Yi
Ruihan Yi on 16 May 2020
Commented: Ruihan Yi on 20 May 2020
I'm a beginner in MATLAB.
This task is to wirte a function called 'primeList' to list all primes form 1 to p. isprime is not allowed to be used.
AND the background of this queation is Eratosthenes Sieve so I must use this sieve (mod is not allowed)
I have tried for more than 3 days, now, what I writed can print the primes when p>4.
However, I don't know how to let it print when p =2 or 3?
my code ↓
function primeList=EratosthenesSieve(p) % creat a list of prime numbers from 2 to p
%p=input('please enter a positive integer p, p>2, p= ')
%take a positive integer p as input (not essential)
primeList=1:p;
a=2; %The first prime is 2
while a.^2<=p %End when reach sqrt(p)
primeList(a^2:a:p)=0 %Make all the numbers which are multiples of a to be 0
primeList(1)=0; %Make 1 to be 0 as 1 is neither prime nor composite
a=find(primeList>a,1); %find the next unmarked number to continue
end
primeList(primeList==0)=[] %only keep primes as an array
%special conditions:p=2 or 3 ???
end
  1 Comment
Ruihan Yi
Ruihan Yi on 16 May 2020
I'm actually not a native English speaker, so if my expression is confusing you, thank you for pointing it out for me.

Sign in to comment.

Answers (1)

Devineni Aslesha
Devineni Aslesha on 18 May 2020
Hi Ruihan
Shift the line 'primeList(1)=0;' from the while loop to above the while loop to print the correct prime numbers when p = 2 or 3.

Categories

Find more on Programming in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!