Автор | Сообщение |
|
Отправлено: 25.11.21 22:56. Заголовок: №4202 (числа-близнецы) из генератора
(Б. Баобаба) Числа-близнецы — это такие простые числа, которые отличаются друг от друга на 2. Найдите все пары чисел-близнецов в диапазоне [3 000 000; 10 000 000]. В ответе запишите количество найденных пар и среднее арифметическое последней пары. Можно получить комментарий к этому решению? start = 3000000 end = 10000000 #start, end = 1, 100 count = 0 primes = [1]*(end+1) for d in range(2, round(end**0.5)): if primes[d]: #что проверяет это условие?? for k in range(2*d,end+1,d): primes[k] = False print( [x for x in range(start,end+1) if primes[x]] ) count = 0 avg = 0 for x in range(start,end-1): if primes[x] and primes[x+2]: count += 1 avg = x + 1 print( x, x+2 ) print( count, avg )
|
|
|
Ответов - 5
[только новые]
|
|
|
| Администратор
|
Сообщение: 3042
|
|
Отправлено: 26.11.21 11:04. Заголовок: Давайте вы сначала о..
Давайте вы сначала оформите это решение (см. замечание в желтой рамке вверху).
|
|
|
|
Отправлено: 26.11.21 11:58. Заголовок: start = 3000000 end..
start = 3000000 end = 10000000 #start, end = 1, 100 count = 0 primes = [1]*(end+1); for d in range(2, round(end**0.5)): if primes[d]: # вот в этом моменте не понятно по какому условию заполняется массив for k in range(2*d,end+1,d): # здесь убираем все четные делители primes[k] = False; #print( [x for x in range(start,end+1) if primes[ x]] ) count = 0 avg = 0 for x in range(start,end-1): if primes[x] and primes[x+2]: count += 1 avg = x + 1 #print( x, x+2 ) print( count, avg )
|
|
|
|
Отправлено: 26.11.21 12:03. Заголовок: и почему вот так на ..
и почему вот так на больших значения не работает, суть одна и таже, разница в заполнении массива # создать массив делителей - это простые нечетные def f(n): return all(n % i!=0 for i in range(2, int(n ** 0.5) + 1)) b = [] for i in range(3*10**6, 10*10**6): if i % 2 != 0 and f(i): b.append(i) #print(b) count = 0 avg = 0 for x in range(3*10**6, 10*10**6): if x in b and (x+2) in b: count += 1 avg = x + 1 #print( x, x+2 ) print( count, avg )
|
|
|
|
| Администратор
|
Сообщение: 3043
|
|
Отправлено: 26.11.21 12:13. Заголовок: pts56@ya.ru пишет: ..
pts56@ya.ru пишет: цитата: | вот в этом моменте не понятно по какому условию заполняется массив |
|
Посмотрите источники по теме "Решето Эратосфена". Например, здесь. цитата: | и почему вот так на больших значения не работает, суть одна и таже, разница в заполнении массива |
|
Потому что этот способ сильно медленнее.
|
|
|
|
Отправлено: 26.11.21 12:26. Заголовок: Спасибо...
Спасибо.
|
|
|
|