Я написал две функции на разных языках в соответствии с алгоритмом, который проверяет простоту числа, указанного в обзоре задачи 7 проекта Эйлера. Я не вижу различий в этих двух функциях, но они дают мне разные результаты.Почему?
Первый в Kotlin:
import kotlin.math.floor
import kotlin.math.sqrt
fun isPrime(n: Int): Boolean {
if (n == 1) return false
else if (n < 4) return true
else if (n % 2 == 0) return false
else if (n < 9) return true
else if (n % 3 == 0) return false
else {
val r = floor(sqrt(n.toDouble())).toInt()
var f = 5
while (f <= r) {
if (n % f == 0) return false
else if (n % (f + 2) == 0) return false
f += 6
}
return true
}
}
fun main(args: Array<String>) {
var sum = 5
var n = 5
while (n <= 2000000) {
if (isPrime(n)) sum += n
n += 2
if (n <= 2000000 && isPrime(n)) sum += n
n += 4
}
println(sum)
}
вывод 1179908154
Затем тот в Python:
import math
def isPrime(n):
if n==1 :
return False
elif n<4 :
return True
elif n%2==0:
return False
elif n<9:
return True
elif n%3==0:
return False
else:
r=math.floor(math.sqrt(n))
f=5
while(f<=r):
if n%f==0:
return False
elif n%(f+2)==0:
return False
f+=6
return True
sum =5
n =5
while n<=2000000:
if isPrime(n):
sum+=n
n+=2
if n<=2000000 and isPrime(n):
sum+=n
n+=4
print(sum)
Вывод142913828922
Эти две программы одинаковы, но почему они дали мне разные ответы?И .... Впервые задайте вопрос на английском.Извините за язык.