How to convert flowchart to MATLAB code ?

17 次查看(过去 30 天)
sony
sony 2023-11-6
回答: DGM 2023-11-16
Dear Sirs, please help me to convert this flowchart to MATLAB code.
I am facing some difficulties in loops I tried hard to solve it several times but I couldn't.
it is about inputting a number and printing out if it prime number or not.
I would appreciate it if you could help me with this.
  3 个评论
sony
sony 2023-11-7
counter = 2;
num = 0;
i = mod(num, counter);
disp('Enter Number');
num = input('');
while (num <= 0)
disp('Enter Number');
num = input('');
end
if (mod(num, 2) == 0)
disp('not prime number');
end
if (mod(num, counter) > 0)
counter = counter + 1;
if (i == 0)
disp('prime number');
end
end
I tried this but I am stuck in the second loop on how to do it.
before this, I tried 20 times or more.
sorry, I am a beginner.
thanks, a lot.
sony
sony 2023-11-7
% Prompt the user to enter a positive integer
n = input('Enter a positive integer: ');
% Initialize the flag variable
is_prime = true;
% Check if the entered number is 0 or 1
if (n == 0 || n == 1)
is_prime = false;
end
% Check if the entered number is divisible by any number from 2 to n/2
for i = 2:n/2
if (mod(n, i) == 0)
is_prime = false;
break;
end
end
% Display the result
if (is_prime)
disp([num2str(n), ' is a prime number']);
else
disp([num2str(n), ' is not a prime number']);
end
I found this solution it be good and makes sense but I am wondering how to do it like the previous flowchart.

请先登录,再进行评论。

回答(2 个)

Walter Roberson
Walter Roberson 2023-11-6

DGM
DGM 2023-11-16
This is what I was squatting on. It's not a literal interpretation of the flowchart, but there's no good reason to use a literal interpretation.
% don't harrass the user for inputs
% unless you like collecting typos
N = 456156445111;
% use a flag instead of a scattered bunch of redundant disp() calls
% avoid entering the loop if at all possible
P = [2 3 5 7 11 13 17 19 23 29 31 37]; % known small primes (as many as you want)
if ismember(N,[1 P]) % is N a known small prime?
nisprime = true;
elseif any(~mod(N,P)) % does N have known small prime factors?
nisprime = false;
else % this is slow
for C = 2:N-1
if ~mod(N,C)
nisprime = false;
break;
end
end
nisprime = true;
end
if nisprime
disp('prime')
else
disp('not prime')
end
There are plenty of better examples in other threads. I just figured I'd dump this so that I can delete my forum notes.

Community Treasure Hunt

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

Start Hunting!

Translated by