执行被中断,原因是:
EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)。
该过程一直处于中断状态,使用thread return -x
返回表达式评估之前的状态
import UIKit
func numberWhosePrimeFactorIsNeeded(_ number : Int) {
var a = 1
for primefactor in 2...600851475143 where number % primefactor == 0 {
let c = a * primefactor
if c == 600851475143 {
print(primefactor)
} else {
a = c
}
}
}
numberWhosePrimeFactorIsNeeded(600851475143)
只有当我var a >=1; if a = 0
没有显示时才会出现错误。即使存在错误,代码也会一直运行到最后。
答案 0 :(得分:2)
你正在溢出Int。这是(a, primefactor)
所采用的路径:
1 71
71 839
59569 1471
87625999 6857
6857 // <-- a prime factor gets printed, then it continues....
87625999 59569
5219793134431 104441
545160414753108071 486847
545160414753108071 * 486847
太大而无法放入Int。