Автор | Сообщение |
|
Отправлено: 15.05.23 05:49. Заголовок: 25_5288 (М. Фирсов)
Здравствуйте! Помогите разобраться. Не сходится ответ. Мой вариант программы: divs=[] for m in range(2,500001): kdivs=0 if m>10: k=int(m**0.5) else: k=m for d in range(2,k): if m%d==0: kdivs+=1 break if kdivs==0: divs+=[m] for n in range(100000,500000+1): divsn=[] for d in divs: if n%d==0: divsn+=[d] if len(divsn)> 3: p=0 r=divsn[1]-divsn[0] if r!=0: for i in range(len(divsn)-1): if divsn[ i+1 ]-divsn[ i ]==r: p+=1 if p==len(divsn)-1: print(n,len(divsn)*r) В результате получается: 101065 48 124729 24 177289 48 278185 72 А у М. Фирсова ответ: 101065 48 107525 24 124729 24 177289 48 236555 24 278185 72 365585 24 494615 24
|
|
|
Ответов - 3
[только новые]
|
|
|
| Администратор
|
Сообщение: 4001
|
|
Отправлено: 04.06.23 11:47. Заголовок: Поищите эту задачу з..
Поищите эту задачу здесь, а авторское решение - здесь.
|
|
|
|
Отправлено: 05.06.23 08:53. Заголовок: Поляков пишет: Бла..
Благодарю за ваш ответ. В моём варианте ищутся только простые делители, а в варианте М. Фирсова: def factorization(n): for div in range(2, int(n ** 0.5) + 1): if n % div == 0: return [div] + factorization(n // div) return [n] Видимо из-за этого ответы только частично совпадают.
|
|
|
|
Отправлено: 24.06.23 04:55. Заголовок: de=lambda n: sorted..
de=lambda n: sorted([c for c in set(chain(*[(a,n//a) for a in range(1,int(n**0.5)+1) if n%a==0])) if c in res]) def reseto(n): l=[]; r=set() for i in range(2,n+1): if i not in r: l.append(i) r.update(range(i**2,n+1,i)) return l res=reseto(85000) for n in range(100000,500001): delit=de(n) if len(delit)>3 and all(delit[i+1]-delit==delit[i+2]-delit[i+1] for i in range(len(delit)-2)): print(n, len(delit)*(delit[1]-delit[0]))
|
|
|
|