Ищем долю простых чисел в списке, ошибка в кодеPython

Программы на Python
Ответить
Anonymous
 Ищем долю простых чисел в списке, ошибка в коде

Сообщение Anonymous »

Я пытаюсь решить задачу Проекта Эйлера, которая состоит в том, чтобы найти точку, в которой доля простых чисел в списке падает ниже определенного процента (диагонали в этой спирали чисел ниже).
Я сгенерировал простые числа до определенной точки, затем сравнил с ним список чисел, но ответ, который я получаю, намного ниже, чем правильный ответ, и я не знаю, почему. Мой ответ был 631 (для менее 10%), правильный ответ примерно 26000.
Я знаю, что мой подход не работает, потому что он слишком медленный, поэтому я повторю его, но я также хочу знать, почему я все равно получаю неправильный ответ.
Изображение

len_limit = 6 # for generating primes. I've adjusted this limit based on how far I get up to
limit = 10 ** len_limit
primes2 = [True] * (limit + 1)
primes2[0] = primes2[1] = False
for i in range (2,int(limit ** 0.5) + 1):
for n in range(2, int(limit / i) + 1):
primes2 [i*n] = False
primes = []
for i in range(len(primes2)):
if primes2 == True:
primes.append(i)

def make_square(side_length): # making all the numbers into a list
a,b = 0,0
nums = [1]
square_size = side_length
for n in range(2,square_size):
nums.append(4 * n ** 2 - 10 * n + 7) # NE
nums.append((2*n - 1) ** 2) # SE
nums.append(4 * n ** 2 - 8 * n + 5) # NW
nums.append(4 * n ** 2 - 6 * n + 3) # SW
nums.sort()
return nums

def fraction_prime(side_length):
nums = make_square(side_length)
a,b = 0,0
for num in nums:
if num in primes:
a += 1
b += 1
else:
b += 1
return (a/b)

i = 3
while True:
i += 1
fraction_prime(i)
side_length = 2 * i - 3
# print(fraction_prime(i),side_length,i) # optional, just to check that it was working
if fraction_prime(i)

Подробнее здесь: https://stackoverflow.com/questions/798 ... or-in-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»