Автор | Сообщение |
|
Отправлено: 27.05.21 08:49. Заголовок: егэ 25 № 173 Не сходятся ответы
Моя программа: 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 Получены ответы: 650031 23 650090 60 650141 23 650153 282 Ответы автора: '650090 60 650153 282 650155 3945 650208 134 Подскажите, пожалуйста, где у меня ошибка?
|
|
|
Ответов - 7
[только новые]
|
|
|
Отправлено: 27.05.21 10:31. Заголовок: d = 2 По идее d д..
По идее d должно равняться 0 изначально
|
|
|
|
Отправлено: 27.05.21 10:38. Заголовок: Не согласна
Алексей, на d делим, не может d равняться 0
|
|
|
|
Отправлено: 27.05.21 10:54. Заголовок: Да, я понял для чего..
Да, я понял для чего d. А вот в чём точно ошибка, так это вот тут цитата: | if x % d == 0 and prost(d): |
| Некорректно вы условие объединили. Если d - составной делитель, а x//d - простой, то простой вы упускаете.
|
|
|
|
Отправлено: 27.05.21 10:56. Заголовок: if x % d == 0: ..
if x % d == 0: if prost(d): a.append(d) d1 = x // d if d1!=d and prost(d1): a.append(d1)
|
|
|
|
Отправлено: 27.05.21 11:04. Заголовок: Опять не согласна
Условие if x % d == 0 and prost(d): значит, что d - делитель икса и является простым числом. как раз простой делитель я учитываю.
|
|
|
|
Отправлено: 27.05.21 15:02. Заголовок: Условие if x % d == ..
цитата: | Условие if x % d == 0 and prost(d): значит, что d - делитель икса и является простым числом. как раз простой делитель я учитываю. |
| Вы допускаете ошибку, так как если это условие не выполняется вы НЕ проверяете второй делитель. Разберитесь в своей ошибке, на этом окончим.
|
|
|
|
Отправлено: 27.05.21 16:07. Заголовок: Спасибо!
Вы совершенно правы, нельзя объединять условия. Спасибо!
|
|
|
|