Write a function used to list primes

8 次查看(过去 30 天)
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 个评论
Ruihan Yi
Ruihan Yi 2020-5-16
I'm actually not a native English speaker, so if my expression is confusing you, thank you for pointing it out for me.

请先登录,再进行评论。

回答(1 个)

Devineni Aslesha
Devineni Aslesha 2020-5-18
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.

类别

Help CenterFile Exchange 中查找有关 Programming 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by