swift - Identify prime number -
for reason, gave me wrong result. it's isitprime = true
no matter number assigned "number" variable.
this code:
let number = 6 var = 1 var isitprime: bool? while < number { if number % == 0 { isitprime = false } else { isitprime = true } += 1 } print(isitprime)
can explain me what's wrong code , why isitprime
bool outputs true
?
problem 1
the last iteration of while loop
while < number { if number % == 0 { isitprime = false } else { isitprime = true } += 1 }
does overwrite result.
so end following result
if number % (number-1) == 0 { isitprime = false } else { isitprime = true }
problem 2
finally every number can divided 1, should start i
2
. so
let number = 6 var = 2 var isitprime = true while < number { if number % == 0 { isitprime = false break } } print(isitprime)
refactoring
you can write similar logic using functional programming
let number = 5 let upperlimit = int(double(number).squareroot()) let isprime = !(2..<upperlimit).contains { number % $0 == 0 }
Comments
Post a Comment