Writing a function to find prime numbers
161 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Daniel Kingsley
am 19 Aug. 2015
Kommentiert: Steven Lord
am 27 Apr. 2021
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
1 Kommentar
David Young
am 19 Aug. 2015
Please format your code - it's not readable as you can see. (There's a "{} Code" button.)
Akzeptierte Antwort
James Tursa
am 19 Aug. 2015
Bearbeitet: James Tursa
am 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
Weitere Antworten (3)
Pranash Azrot
am 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
am 21 Jul. 2019
Bearbeitet: Irfan Turk
am 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
3 Kommentare
Farah Salman
am 27 Apr. 2021
function y = isPrime(N)
for i=2: floor(N/2)
if mod(N,i)==0
y=false;
return
end
y= true;
end
1 Kommentar
Steven Lord
am 27 Apr. 2021
This code has at least one bug.
z = isPrime(2)
function y = isPrime(N)
for i=2:floor(N/2)
if mod(N,i)==0
y=false;
return
end
y= true;
end
end
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!