Обработка целых чисел. Проверка делимости


start, end = 77777777, 88888888


Download 0.83 Mb.
bet8/25
Sana28.12.2022
Hajmi0.83 Mb.
#1023525
1   ...   4   5   6   7   8   9   10   11   ...   25
Bog'liq
ege25

start, end = 77777777, 88888888
primes = [2]
for i in range(3, int(end**0.25) + 1, 2):
flag = True
for d in range(2, int(i**0.5) + 1):
if i % d == 0:
flag = False
break
if flag:
primes.append(i)

  1. В Python существует конструкция for… else…. Действия по ветке else выполняются в том случае, если цикл завершился без break. Зная это, код можно слегка сократить:

primes = [2]
for i in range(3, int(end**0.25) + 1, 2):
for d in range(2, int(i**0.5) + 1):
if i % d == 0:
break
else:
primes.append(i)

  1. Теперь будем возводить каждое нечётное простое число в четвёртую степень и умножать на два, пока не попадём в нужный отрезок либо не перескочим через него:

ans = []
# рассматриваем все простые числа, кроме двойки
for el in primes[1:]:
num = el**4
while num <= end:
if num >= start:
ans.append((num, el))
num *= 2

  1. При таком подходе к решению, ответ необходимо отсортировать, так как мы будет получать значения в порядке возрастания простых чисел, а не чисел из отрезка

print(*sorted(ans), sep='\n')

  1. Полное решение на Python:

start, end = 77777777, 88888888
primes = [2]
for i in range(3, int(end**0.25) + 1, 2):
for d in range(2, int(i**0.5) + 1):
if i % d == 0:
break
else:
primes.append(i)


ans = []
for el in primes[1:]:
num = el**4
while num <= end:
if num >= start:
ans.append([num, el])

Download 0.83 Mb.

Do'stlaringiz bilan baham:
1   ...   4   5   6   7   8   9   10   11   ...   25




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling