Код ничего не выводит, помогите пожалуйста исправить его
На 2 фото прикрепил какое задание мне нужно выполнить, а так же код, который я написал. Что в нем нужно исправить, чтобы он работал? Сейчас он не выводит вообще ничего.
for n in range (1,1000):
s='3'+'5'*n
while '25' in s or '355' in s or '555' in s:
if '25' in s:
s=s.replace('25','32',1)
if '355' in s:
s=s.replace('355','25',1)
if '555' in s:
s=s.replace('555','3',1)
for x in s:
sum=0
sum+=int(x)
if sum/(sum//2)==2:
print(n)
break
Ответы (1 шт):
Автор решения: Глеб
→ Ссылка
Последние два блока кода нужно сдвинуть на отступ вперед, в цикл.
sum = 0тоже.Метод определения простоты числа явно неверен. Замените его на нормальный.
Вот исправленный, дополненный и приведенный ко всем стандартам код:
# Функция проверки простоты числа
def is_prime(a):
if a % 2 == 0:
return a == 2
d = 3
while d * d <= a and a % d != 0:
d += 2
return d * d > a
# Основной код
s = '355555'
for _ in range (1, 1000):
while any([i in s for i in ['25', '355', '555']]):
if '25' in s:
s = s.replace('25', '32', 1)
if '355' in s:
s = s.replace('355', '25', 1)
if '555' in s:
s = s.replace('555', '3', 1)
summa = sum([int(i) for i in list(s)])
if is_prime(summa): print(summa)
sum использовать в качестве переменной — плохая идея, это имя встроенной функции python.
P.S. Почитайте PEP8. Стиль кода оставляет желать лучшего.

