Вот функция, написанная на Python:
Код: Выделить всё
def nth(n):
if n == 1:
return 2
elif n == 2:
return 3
else:
count = 2
factorial = 1
prime = 3
while count != n:
factorial *= prime*(prime-1)
prime += 2
if prime*(factorial // prime) != factorial:
count += 1
return prime
Вот функция, написанная на C++:
Код: Выделить всё
long long nth(int n) {
if (n == 1) {
return 2;
} else if (n == 2) {
return 3;
} else {
int count = 2;
long long factorial = 1, prime = 3;
while (count != n) {
factorial *= prime*(prime - 1);
prime += 2;
if (prime*(factorial / prime) != factorial) {
count++;
}
}
return prime;
}
Я подозреваю, что проблема связана с тем, как обрабатывается целочисленное переполнение. Я понял, что факториал/простое в C++ не дает того же результата, что факториал // простое в Python. Я только изучаю C/C++ и не смог найти решение при просмотре. Буду признателен за любую помощь.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ython-vs-c