how to use conditional statement realizing prime function

조회 수: 2 (최근 30일)
Shuoze Xu
Shuoze Xu 2022년 6월 17일
댓글: Walter Roberson 2022년 6월 19일
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
Shuoze Xu
Shuoze Xu 2022년 6월 17일
I'm sorry, I don't understand what you're trying to say
Walter Roberson
Walter Roberson 2022년 6월 18일
편집: Walter Roberson 2022년 6월 18일
there are exceptions:
  • mod(inf,i) is nan
  • mod(nan,i) is nan
  • problems if n is empty or not a scalar

댓글을 달려면 로그인하십시오.

채택된 답변

Voss
Voss 2022년 6월 18일
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

추가 답변 (1개)

Walter Roberson
Walter Roberson 2022년 6월 17일
Hint:
prime_detected = true
for appropriate things
if appropriate condition
prime_detected = false;
break;
end
end
  댓글 수: 2
Shuoze Xu
Shuoze Xu 2022년 6월 17일
How to return string on function?
Walter Roberson
Walter Roberson 2022년 6월 19일
if prime_detected
a = "true";
else
a = "false";
end

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Number Theory에 대해 자세히 알아보기

태그

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by