how to use conditional statement realizing prime function

2 visualizaciones (últimos 30 días)
Shuoze Xu
Shuoze Xu el 17 de Jun. de 2022
Comentada: Walter Roberson el 19 de Jun. de 2022
Hi.
I want to use code to check if a number isprime. I know isprime () but I don't want to use it because I want to know how to use judgments to do tha.
Here is my code.
%function code
function[a,b] = isPrime(n)
% A number, n, is not prime if any number between 2 and n/2 divides the number without any remainder.
a = 1; % a = 1 means true
b = 0; % b = 0 means false
half = n/2; % get the half nums of n
for i = 2:half
if(mod(n,i)~=0) % if there is remainder
continue; % keep check
elseif(mod(n,i) == 0)
disp(b); % display false
break; % stop loop
end
disp(a);
end
end
% driver code
n = 9;
[x1,x2]= isPrime(n);
disp(isPrime(n));
Sample test:
isPrimedriver
0
0
1
It should output zero and stop looping, why it work twice?
And how to modify my code?
Thank you.
  4 comentarios
Shuoze Xu
Shuoze Xu el 17 de Jun. de 2022
I'm sorry, I don't understand what you're trying to say
Walter Roberson
Walter Roberson el 18 de Jun. de 2022
Editada: Walter Roberson el 18 de Jun. de 2022
there are exceptions:
  • mod(inf,i) is nan
  • mod(nan,i) is nan
  • problems if n is empty or not a scalar

Iniciar sesión para comentar.

Respuesta aceptada

Voss
Voss el 18 de Jun. de 2022
Your driver code is calling isPrime two times.
% driver code
n = 9;
The first time, you only get a disp(b) from inside isPrime
[x1,x2]= isPrime(n);
0
The second time, you get a disp(b) from inside isPrime and then, after isPrime is done, you also disp the returned value from isPrime, which is a
disp(isPrime(n));
0 1
%function code
function[a,b] = isPrime(n)
% A number, n, is not prime if any number between 2 and n/2 divides the number without any remainder.
a = 1; % a = 1 means true
b = 0; % b = 0 means false
half = n/2; % get the half nums of n
for i = 2:half
if(mod(n,i)~=0) % if there is remainder
continue; % keep check
elseif(mod(n,i) == 0)
disp(b); % display false
break; % stop loop
end
disp(a);
end
end

Más respuestas (1)

Walter Roberson
Walter Roberson el 17 de Jun. de 2022
Hint:
prime_detected = true
for appropriate things
if appropriate condition
prime_detected = false;
break;
end
end
  2 comentarios
Shuoze Xu
Shuoze Xu el 17 de Jun. de 2022
How to return string on function?
Walter Roberson
Walter Roberson el 19 de Jun. de 2022
if prime_detected
a = "true";
else
a = "false";
end

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by