素数とベン図

  • 自然数 n 種類が作る2^nカテゴリを2次元平面の領域分割として表す方法がベン図
  • どんなnでもうまい方法が見つかる(見つけやすい)わけではなく、素数はうまい方法があるという(こちら)
  • まず、nが素数の場合、2^n-2=2(2^{n-1}-1)がnで割り切れるという。
library(primes)

n <- 1:100
p <- which(is_prime(n)) # 素数はどれ?
n. <- n[p]
N <- 2^n
N. <- 2^n.
a <- (N-2)/n
a. <- (N.-2)/n.

my.is.integer <- function(a,k=-10){ # 整数かどうかを判定する関数
	(abs(a)-floor(abs(a))) < 10^k
}

all(my.is.integer(a))
all(my.is.integer(a.)) # 素数の場合はそろって整数
  • 2^n-1素数の関係には別の側面もあって、メルセンヌ数と言うのがあって、その中には素数が結構、含まれることが知られている。ちなみに2^n-1素数のとき、nも素数だという。ただし素数nに対して2^n-1素数であるとは限らない
  • さて、この2^n-2をn等分した数は、2^n通りの場合のうちの全0,全1を除いた場合の1\n画分になる
  • その画分をポセットにすることが、ベン図の描き方の発見に利用されるという
  • 実際、その画分の要素数は、nからi個を取る場合をn等分したものを足し合わせたものとなるので、\sum_{i=1}^{n-1} \begin{pmatrix} n \\ i \end{pmatrix}/nと分けられる
  • ベン図表示の検出にあたっては、このように分けるn対称な取り合わせを構成することを通じて行う。そのような取り合わせはGreene-Kleitman successor ruleというもので発見できるらしい(こちら)