Связать свой код с данными энциклопедии OEIS
я создаю пользовательскую функцию. параметры функции это диапазон чисел(a, b) и переменная num которая указывает количество делителей на которые можно разложить число. То есть, передаю функции диапазон чисел range(a, b+1) и num количество делителей, функция возвращает мне список чисел из данного диапазона, которые имеют указанное количество делителей.Информацию моя функция должна получать из энциклопедии A001055-OEIS.Я это вижу как хеш-таблицу последовательности A001055-OEIS, в которой ключи это числа: 1, 2, 3... , а значения это соответствующие элементы вышеупомянутой последовательности. Моя проблема в том, что я не могу связать свою функцию с этой энциклопедией, не могу заставить функцию искать определённую информацию в этой базе данных и возвращать список чисел отвечающий указанным условиям.
Ответы (1 шт):
Задачка интересная, поэтому покажу пример решения, хотя обычно тут за вас задачи не решают:
import re
# https://oeis.org/A001055
oeis_A001055 = "1, 1, 1, 2, 1, 2, 1, 3, 2, 2, 1, 4, 1, 2, 2, 5, 1, 4, 1, 4, 2, 2, 1, 7, 2, 2, 3, 4, 1, 5, 1, 7, 2, 2, 2, 9, 1, 2, 2, 7, 1, 5, 1, 4, 4, 2, 1, 12, 2, 4, 2, 4, 1, 7, 2, 7, 2, 2, 1, 11, 1, 2, 4, 11, 2, 5, 1, 4, 2, 5, 1, 16, 1, 2, 4, 4, 2, 5, 1, 12, 5, 2, 1, 11, 2, 2, 2, 7, 1, 11, 2, 4, 2, 2, 2, 19, 1, 4, 4, 9, 1, 5, 1"
num_of_dividers = dict(enumerate(map(int, re.findall(r'\d+', oeis_A001055)), 1))
n = 2
a = 5
b = 20
print(list(filter(lambda x: num_of_dividers[x] == n, range(a, b+1))))
# [6, 9, 10, 14, 15]
- Копируем строку с набором нужных цифр с сайта
- Преобразуем в нужный словарь
- Фильтруем заданный диапазон чисел, проверяя по словарю, что это число даёт нужное количество делителей
P.S. Процесс автоматического получения строки данных с сайта в общем-то тоже не сложен:
import requests
from bs4 import BeautifulSoup
url = "https://oeis.org/A001055"
html_doc = requests.get(url, verify=False).content
soup = BeautifulSoup(html_doc, 'html.parser')
oeis_A001055 = soup.find(class_="seqdata").text
P.P.S. Более длинный список данных и прямо уже с номерами элементов содержится по адресу https://oeis.org/A001055/b001055.txt спасибо Stanislav Volodarskiy