Форум » Массивы, сортировка, работа с файлами » егэ 25 № 173 Не сходятся ответы » Ответить

егэ 25 № 173 Не сходятся ответы

romad: Моя программа: [pre2] from math import sqrt def prost(x): d = 2 while d * d <=x: if x % d == 0: return False d += 1 return x>0 k = 0 x = 650001 while k <4: d = 2 a = [] while d <= int(sqrt(x)): if x % d == 0 and prost(d): a.append(d) d1 = x // d if prost(d1): a.append(d1) d += 1 if len(a) !=0: F = sum(a) // len(a) if F % 37 ==23: print(x,F) k += 1 x +=1[/pre2] Получены ответы: 650031 23 650090 60 650141 23 650153 282 Ответы автора: '650090 60 650153 282 650155 3945 650208 134 Подскажите, пожалуйста, где у меня ошибка?

Ответов - 7

cabanov.alexey: d = 2 По идее d должно равняться 0 изначально

romad: Алексей, на d делим, не может d равняться 0

cabanov.alexey: Да, я понял для чего d. А вот в чём точно ошибка, так это вот тут if x % d == 0 and prost(d): Некорректно вы условие объединили. Если d - составной делитель, а x//d - простой, то простой вы упускаете.


cabanov.alexey: [pre2] if x % d == 0: if prost(d): a.append(d) d1 = x // d if d1!=d and prost(d1): a.append(d1) [/pre2]

romad: Условие if x % d == 0 and prost(d): значит, что d - делитель икса и является простым числом. как раз простой делитель я учитываю.

cabanov.alexey: Условие if x % d == 0 and prost(d): значит, что d - делитель икса и является простым числом. как раз простой делитель я учитываю. Вы допускаете ошибку, так как если это условие не выполняется вы НЕ проверяете второй делитель. Разберитесь в своей ошибке, на этом окончим.

romad: Вы совершенно правы, нельзя объединять условия. Спасибо!



полная версия страницы