Hi. Working in Matlab. Trying to write a program to find prime numbers without using the Prime, iprime, factor, etc command. No matter where I place the square root I cannot get the program to execute it. So, I continue to end up with a list of odd numbers instead of prime.
Any suggestions? New Matlab user. I know I removed all evens and left with odds but when I try to manipulate to take the primes out from the odds it is not working. Thank you. Just need some hints.
clear;
clc;
tic;
N=15 %largest number in list
R=linspace (1,N,N) %starting list - all numbers up to n - Matlab
%linspace calculates the space evenly between elements 1=starting value,
%N=largest value, N=total
nextprime=2 %starting with 2
if (nextprime*nextprime) <N %quit once through all numbers
end
for k=2:N %starts at 2 to start looking for prime
if nextprime*k <=N %don't exceed length of vector
R(nextprime*k) = 0 % 0 if even
end
end
% end %this is taking out all the even numbers
%trying to get prime only numbers --THIS IS WHERE MY PROBLEM IS
for n=2:N %starts at 2 to start prime ???
if R (nextprime+n) <=0 %go up list until first
if nextprime +n <=N %looking for non-zero
sqrt(nextprime) %if non-zero -- looking for prime
nextprime = R(nextprime+n) %update nextp
end
end
end
primeven=[]; %start with empty vector
for n=2:length(R); %list primes only - omit "1"
if (R(n)~=0);
primeven=[primeven,R(n)] %add to existing vector of
%primes
end
end
Any suggestions? New Matlab user. I know I removed all evens and left with odds but when I try to manipulate to take the primes out from the odds it is not working. Thank you. Just need some hints.
clear;
clc;
tic;
N=15 %largest number in list
R=linspace (1,N,N) %starting list - all numbers up to n - Matlab
%linspace calculates the space evenly between elements 1=starting value,
%N=largest value, N=total
nextprime=2 %starting with 2
if (nextprime*nextprime) <N %quit once through all numbers
end
for k=2:N %starts at 2 to start looking for prime
if nextprime*k <=N %don't exceed length of vector
R(nextprime*k) = 0 % 0 if even
end
end
% end %this is taking out all the even numbers
%trying to get prime only numbers --THIS IS WHERE MY PROBLEM IS
for n=2:N %starts at 2 to start prime ???
if R (nextprime+n) <=0 %go up list until first
if nextprime +n <=N %looking for non-zero
sqrt(nextprime) %if non-zero -- looking for prime
nextprime = R(nextprime+n) %update nextp
end
end
end
primeven=[]; %start with empty vector
for n=2:length(R); %list primes only - omit "1"
if (R(n)~=0);
primeven=[primeven,R(n)] %add to existing vector of
%primes
end
end