0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OEISに載っていない正の整数

Last updated at Posted at 2024-04-28

OEISに載っていない正の整数を探す

はじめに

OEISには、多くの整数列が載っている。

現在 20067がOEISに出てきていない最小の正の整数であると、wikipediaの「面白い数のパラドックス」に載っているが、これを確認してみる。

全数列データの取得

CC-BY-NC 3.0 licenseの元で、全数列データを利用できる。

ダウンロードして解凍した、strippedというファイルを利用する。

OEISに載っていない正の整数を探す

 まず、strippedファイルを開くと、5行目から数列のデータがあるとわかるので、5行目以降読み取る。

import pandas as pd
from collections import Counter

# strippedファイルの5行目から
df = pd.read_csv('stripped', skiprows=4, header=None, delim_whitespace=True,
                 names=['A_number', 'seq_str'])

数列は文字列なので、リストに変換したカラムを追加。

def modify_seq(row):
    numbers = [int(num) for num in row.split(',') if num.strip()]  # 空の文字列を除外
    return numbers

df['seq'] = df['seq_str'].apply(modify_seq)

数列をリストに変換したカラムを用いて、出てきていない正の整数を探す。

def find_missing_positve_integers(a_list, num_missing):
    a_set = set(a_list)

    missing_integers = []
    num = 1
    while len(missing_integers) < num_missing:
        if num not in a_set:
            missing_integers.append(num)
        num += 1

    return missing_integers

def interesting_num(column):
    all_integers = [integer for row in column for integer in row]
    # 出現するkeyを取得
    return Counter(all_integers).keys()


interesting_integers = interesting_num(df['seq'])
print(find_missing_positve_integers(interesting_integers, 10))

出力結果は

[20067, 20990, 22978, 23543, 23735, 24085, 24159, 24555, 26301, 26673]

となり、20067が載っていないことが確認できた。(2024/10/05更新)

参考

OEIS wiki download

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?