How to convert flowchart to MATLAB code ?

15 vues (au cours des 30 derniers jours)
sony
sony le 6 Nov 2023
Réponse apportée : DGM le 16 Nov 2023
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 commentaires
sony
sony le 7 Nov 2023
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 le 7 Nov 2023
% 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.

Connectez-vous pour commenter.

Réponses (2)

Walter Roberson
Walter Roberson le 6 Nov 2023
  1 commentaire
sony
sony le 7 Nov 2023
Thanks a lot, it is really tools help.

Connectez-vous pour commenter.


DGM
DGM le 16 Nov 2023
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.

Catégories

En savoir plus sur Just for fun dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by