我的逻辑出了什么问题?9这个循环如何作为素数而非素数出现?
这可以按照0,1,2,3,4,5,6,7,8的预期工作,但挂起9 ...
var userInput = 9 if userInput == 0 { print("0 is not a prime number") } else if userInput == 1 { print("1 is not a prime number") } else if userInput == 2 { print("2 is a prime number") } else { for var i = 2; i < userInput; i = i + 1 { if userInput % i == 0 { print("\(userInput) is not a prime number") break } else { print("\(userInput) is a prime number") break } } }
R Menke.. 5
删除其中一个break
陈述.循环需要完全运行,直到找到不是素数的条件.如果没有找到上述条件,则为素数.
var userInput = 9 if userInput == 0 { print("0 is not a prime number") } else if userInput == 1 { print("1 is not a prime number") } else if userInput == 2 { print("2 is a prime number") } else { for var i = 2; i < userInput; i = i + 1 { if userInput % i == 0 { print("\(userInput) is not a prime number") break } else { print("\(userInput) is a prime number") // no break here } } }
或者更有用:
逻辑嵌入在函数中,因此您可以使用return
控制流代替break
.因为return true
最后你只需要寻找false
条件.如果它不是一个素数,你return false
用来逃避函数,return true
最后将永远不会被调用.
extension Int { func isPrimeNumber() -> Bool { switch self { case 0 : return false case 1 : return false default : for i in 2..该函数放在扩展名中,
Int
因此您只需调用该函数即可userInput
.
1> R Menke..:删除其中一个
break
陈述.循环需要完全运行,直到找到不是素数的条件.如果没有找到上述条件,则为素数.var userInput = 9 if userInput == 0 { print("0 is not a prime number") } else if userInput == 1 { print("1 is not a prime number") } else if userInput == 2 { print("2 is a prime number") } else { for var i = 2; i < userInput; i = i + 1 { if userInput % i == 0 { print("\(userInput) is not a prime number") break } else { print("\(userInput) is a prime number") // no break here } } }或者更有用:
逻辑嵌入在函数中,因此您可以使用
return
控制流代替break
.因为return true
最后你只需要寻找false
条件.如果它不是一个素数,你return false
用来逃避函数,return true
最后将永远不会被调用.extension Int { func isPrimeNumber() -> Bool { switch self { case 0 : return false case 1 : return false default : for i in 2..该函数放在扩展名中,
Int
因此您只需调用该函数即可userInput
.
如果你正在改进他的代码,你也可以使用`switch`语句.