此问题包含Project Euler问题的解决方案1.如果您想自己解决问题,请立即停止阅读。
我在Python中解决了Project Euler Problem 1,所以我决定在Swift中也这样做。但是:这就是问题,使用相同的代码我在Python和Swift中得到两个不同的结果。
Swift的答案是1000(太高)。在Python中,结果为233168
,在Swift中为234168
。
s = 0
for n in range(0, 1000):
if n % 3 == 0 or n % 5 == 0:
s += n
print(s)
结果:
233168
var s = 0
for n in 0...1000 {
if n % 3 == 0 || n % 5 == 0 {
s += n
}
}
print(s)
结果:
234168
我的问题是:为什么?我究竟做错了什么?如何修复Swift代码?
答案 0 :(得分:4)
Python
范围不包括右端,所以最后1000
正是差异,快速范围包括右端!在Python中,它主要用于执行range(len(some_collection))
在Python中,在swift range(1,1001)
中使其成为1...999
或,您将获得相同的结果。
答案 1 :(得分:2)
PE问题#1要求 1000 1000以下的数字可以整除
Swift相当于range(start, stop)
为start ..< stop
,使用..<
运算符创建范围省略上限:
for n in 0 ..< 1000 { ... }