matlab - define the prompted number is prime or not -
i want code define prompted number user prime or not . since it's assignment i'm not allowed use ' isprime ' predefined code . following approach not useful :
n = input( 'please enter positive enteger value = ' ) ; quotient = floor(n - (mod(n,2)./2)) ; = 1 : quotient if mod(n,i ) == 0 fprintf(' prompted number not prime ' ) ; if mod(n,i) ~= 0 fprintf(' prompted number prime ' ) ; end end end
for example if enter prime number 13 results in :
prompted number prime
but if enter non-prime num 12 repeats ' prompted number prime ' message 10 times .
for = 1 : quotient if mod(n,i ) == 0
that give every number since x mod 1
zero. in other words, remainder (when divide positive integer one) zero, since of them divide perfectly.
you need start @ 2 rather 1.
in addition, once you've found out number not prime, should stop loop since there's no possibility of becoming prime again after :-) and, efficiency, need go square root of number since, if has factor above that, have found equivalent factor below that.
the pseudo-code such beast be:
set isprime true set chkval 2 while chkval * chkval <= number: if number mod chkval zero: set isprime false exit while end if increment chkval end while if isprime: number, " prime" else: number, " composite"
Comments
Post a Comment