1,015 views (last 30 days)

This is homework. I already turned it in. I just don't know why this function doesn't work. I just want to learn what I missed. Thanks so much. This is the problem:

Write a function myprime that takes n, a positive integer,as an input and returns true if n is prime or returns false otherwise. Do not use the isprime or primes or factor built-‐in functions.

Here is my code:

function result = myprime(n)

%%initially set output flag to true

result = true;

%%iterate over all positive integers 2,3,...,n-1

%%if n is not divisible by any of these factors....it is prime

if (n == 1)

result = 'false';

elseif (n == 2)

result = 'true';

else

for i=2:n-1,

if (mod(n,i)==0)

result = 'false';

end

end

end

%%return "true" or "false" instead of 1 or 0

if (result)

result = 'true';

else

result = 'false';

end

James Tursa
on 19 Aug 2015

Edited: James Tursa
on 19 Aug 2015

The basic problem is that you are mixing character variables (with the single quotes ' ') with logical variables (without single quotes). E.g.,

result = true; <-- LOGICAL

%%iterate over all positive integers 2,3,...,n-1

%%if n is not divisible by any of these factors....it is prime

if (n == 1)

result = 'false'; <-- CHARACTER

elseif (n == 2)

result = 'true'; <-- CHARACTER

else

for i=2:n-1,

if (mod(n,i)==0)

result = 'false'; <-- CHARACTER

end

end

end

%%return "true" or "false" instead of 1 or 0

if (result) <-- Intent of test is that variable is LOGICAL

result = 'true';

else

result = 'false';

end

So stick to one or the other. E.g., to use logical variables in the first part of your code:

if (n == 1)

result = false;

elseif (n == 2)

result = true;

else

for i=2:n-1,

if (mod(n,i)==0)

result = false;

end

end

end

Pranash Azrot
on 19 Aug 2015

%%Yaar meh edah kitaah see. meerah answer teek see. menu 100% meliah see. try karrey.

function x = myprime(n)

if (rem(n,2)~=0 || n==2)

k = fix(n/2);

else

x = false;

return;

end

for i = 1:k

w(i) = rem(n,i);

end

t=w(w==0);

[m n] = size(t);

if n<=1

x = true;

else

x = false;

return;

end

Irfan Turk
on 21 Jul 2019

Edited: Irfan Turk
on 21 Jul 2019

You can find all prime numbers upto a certain number with the following code

%This code find all prime numbers

%upto the entered number

clear all;

N=input('Prime Numbers until:');

if N<2

return;

elseif N==2

disp(2);

return;

end

Pr(1)=2;Pr(2)=3;Count=3;

for i=4:N

C=Check(i);

if C==1

Pr(Count)=i;

Count = Count +1;

end

end

disp(Pr);

function C=Check(i)

C=1;

for k=2:(ceil(sqrt(i)))

if mod(i,k)==0

C=0;

end

end

end

John D'Errico
on 21 Jul 2019

Opportunities for recent engineering grads.

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

Start Hunting!
## 1 Comment

## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/234702-writing-a-function-to-find-prime-numbers#comment_305280

⋮## Direct link to this comment

https://ch.mathworks.com/matlabcentral/answers/234702-writing-a-function-to-find-prime-numbers#comment_305280

Sign in to comment.