3 ポイント 投稿者 GN⁺ 2025-08-21 | 1件のコメント | WhatsAppで共有
  • 素数ナンバーグリッドは、素数のパターンと構造を視覚的に示すツールです
  • このグリッドは数字を2次元に配置し、素数が分布する方式をひと目で把握できます
  • パターンを分析することで、素数の規則性またはランダム性に関するインサイトを得ることができます
  • プログラミング/数学の学習者が素数理論を直感的に理解するのに役立ちます
  • さまざまな角度から素数分布を探究するための参考資料として活用できます

素数ナンバーグリッド概要

  • このツールは、数値を2次元グリッドとして配置した後、各マスが素数かどうかを視覚的に区別することを目的としています
  • ユーザーは各行と列の範囲を指定して、さまざまなサイズや形状のグリッドを生成できます
  • グリッド内では素数が色やマークで明確に区別され、これにより素数がどのように分布しているかをひと目で確認できます
  • 規則的な分布、対角線、クラスターなどのパターンを探究しやすくなり、数学的直観を高める資料になります
  • このツールは、開発者や学生がアルゴリズムや可視化作業で参照できるソースを提供します

特徴と活用例

  • 各数字の位置には、素数かどうかを素早く判定した結果が反映されます
  • 大量の数を一度に処理し、大きな数における素数分布まで探索できます
  • さまざまなグリッド形状(正方形、長方形など)に簡単にカスタマイズできます
  • 数学教育、アルゴリズム研究、視覚的プレゼンテーションなどで学習および分析資料として重要です
  • 数学的探究だけでなく、プログラミングの課題や面接など、さまざまな分野で活用できます

1件のコメント

 
GN⁺ 2025-08-21
Hacker Newsのコメント
  • こんにちは! 昨夜、遊び半分でこのシンプルな素数グリッド可視化ツールを作りました。数日前に偶然見つけた "Show HN" の投稿に触発されたものです。Miller-Rabin素数判定法を使っていて、OEIS sequence A014233に載っている素数をベースにしているので、3317044064679887385961980まででも素数判定できます。例としてはこのリンクを見てください。そこに見える3つの円は次の素数を意味しています: 3317044064679887385961783
    3317044064679887385961801
    3317044064679887385961813
    皆さんにも楽しんでもらえたらうれしいです

    • 可視化が本当に素晴らしい! マウスを点の上に乗せたときに、それがどの素数なのか表示する機能があるとよさそうです。それから、各行ごとに列数をXずつ増やすようにしたら(あるいはX自体を素数にしたら)新しいパターンが観察できるのか気になります

    • 作ってくれてありがとう! 列数を素早く増やしながら、繰り返し現れるパターンや小さな渦のような動き、大きく湾曲する線を見つけるのが本当に楽しいです。子どものころは数学の論理パズル的な要素が大好きだったのですが、高校の後半や大学では数学がだんだん抽象的になって難しく感じていました。こういう可視化ツールがあったなら、数学的な概念をもっと具体的に感じられて、数式の裏にある関係にも興味を持ち続けられたと思います

    • 数の基数を16進法やほかの進法に切り替えられる機能もあれば、とても面白そうです。どんなふうにパターンが変わるのかすごく気になります

    • すごくいい! あなたが作ったものを見て、自分でもパターンを見つけようとかなり視覚的に掘り下げてみました :D でも列と行を好きなように並べ替えられるので、結局自分の試みにはあまり意味がなかった気がします :D

  • 変わったやり方を1つ紹介します。整数を100個ずつのpack単位で見ます。packの中に素数があれば黒、なければ赤で塗ります。最初のpackには100個の連続した整数、2番目には2つおき、3番目には3つおき、という具合に入ります。各packは前のpackが終わったところから続けて始まります。1行目にはpackが1つ、2行目には2つ、3行目には3つ……という具合です。ここに図があります。まるで別の宇宙の象形文字みたいです。なぜこう見えるのか、まだよく分かっていません。ランダム分布と比較するなら、コードをこんなふうに変えてみることができます: if (isPrime(myNum)) return 1; を if (Math.random()>0.99) return 1; にすると、違いがはっきり分かります。素数ベースのパターンの対称性や性質がいったいどこから来るのか、本当に気になります

    • このコメントが図の説明をうまくしています。本質的には gcd(x,y) を可視化したもので、素数とはほとんど関係ありません。この事実を知ると、多くのパターンの理由がずっと理解しやすくなります。それでも本当に興味深い可視化です

    • 説明がリンク先のコードと少し違います。N番目のpackがNずつ離れた整数で埋められるのではなく、N番目の行の各packがそれぞれNずつ離れた整数を含んでいます。たとえば2行目の最初のpackは {101, 103, 105, ..., 299}、2つ目のpackは {102, 104, 106, ..., 300} です。この仕組みを理解すると、パターンはこのコメントでうまく説明されています

    • このアイデアにはかなりハマりました。最初はUlam spiralに簡単につながるものだと思っていたのですが、このrabbit holeは多項式剰余や謎めいた "Conjecture F" に行き着きます(説明)。parallax primesについてはこちらのリンクにもっと詳しい説明と関連する背景知識があり、特にこのページの幾何学的な解釈はとても納得感がありました

    • こんな感じでいじってみました: 。偶数packだけ、または奇数packだけを繰り返すと、パターンが実際に収束するのを見つけました。本当に不思議です

  • Ulam spiralも一度描いてみることを提案したいです Ulam spiral wiki。それから、もしこれがConwayのGame of Lifeの初期状態だったら、面白いパターンに進化するのかすごく気になります。いろいろなサイズの開始グリッドをbrute-forceで回して、何ステップ以上生き残るゲームを選び、人間が直接観察することもできると思います。もし素数の特定の小さなグリッドやスパイラルが何か特別なものを生み出したら、HNがざわつくかもしれません

    • 完全に同じではありませんが、10年以上前に作ったUlam spiralジェネレーターがあります。リンク。これは素数だけを打つのではなく、各位置の数が持つ偶数の約数の個数に応じて点の大きさが決まります

    • Ulam spiralにもう一票。最初はなぜ対角線が見えないのか不思議でした。もともとUlam spiralを予想していました

    • 別のUlam spiralツール

  • 素数についての自分の直感では、かなり早い段階でまれになると思っていたのですが、実際には素数はものすごくたくさんあります

    • 素数は実際にはだんだん見つけにくくなります。たとえば、すべての素数を1行に描いてみると、その違いがはっきり分かります(ここを参照)。整数論で有名な素数定理(Prime number theorem)もこれを扱っています。n以下の素数の個数は n/log n に近似され、n付近での素数密度は 1/log n に収束します。私の素数定理の解説Wikipediaも参照できます

    • このテーマについては本当に多くの研究が行われています Wikipedia

    • たいていの人はそう思っています。素数を見つけるのは難しいと教わるからだと思います。実際には素数を見つけること自体は難しくありません。ある整数が素数かどうかを判定するのが難しいように感じるだけです。実際、平方数より素数のほうが多いです

  • cols(列)値が素数になると、パターンがきれいに現れます

    • columnsが素数 p になると、各列の数は p で割った余りが同じになります。だから p の倍数が素数でなくなることで、対角線パターンが生まれます

    • 列そのものが素数であることより、cols+1 や cols-1 に約数が多いとき(例: 25, 91, 119)にも面白いパターンが出ます。素数の近くの数に約数が多いのも興味深いです

    • 列が7のときは右上から左下へ向かう対角線がたくさん見え、列が5のときは左上から右下へ向かうものが見えます。連続するsexy primeの頻度も気になります。大きな数ではこのパターンが崩れるのか知りたいです

    • cols % 30 == 0(30, 60, 90, 120 など)のときのパターンが本当に面白いです。まっすぐな縦線がはっきり見えます。1足したり引いたりすると(119や121)、線が左や右に「回転」するように見えます。本当に素晴らしい可視化ツールです

    • 見えているパターンの大半は、実は素数特有のものではありません。最初の100個の自然数で割り切れない数だけを表示しても、ほとんど同じような図になります

  • 最近、自分も素数可視化ツールを作ってみました:
    https://ilmenit.github.io/prime-fold/
    これは可視化だけでなく、進化アルゴリズムとフィットネス関数で素数を生成したり含んだりする数学関数を見つけるツールです。
    PrimeFoldモード(2D埋め込み): f_x(n), f_y(n) の2つの関数を入力するか進化させて、数を2D座標にマッピングします。素数と合成数を異なる形で可視化します。例: f_x(n) = n, f_y(n) = n^2.
    PrimeGenモード(1D生成): f(n) という1つの関数を入力するか進化させて、数列を作ります。各出力値が素数かどうかと、固有の素数の個数を可視化します。例: f(n) = 2*n + 1

  • 1, 7, 100 に設定すると、スターゲイトのchevronみたいな星座のティッカーテープを見ている感じです :D

  • このリンクでzoom outして cols の値を1つずつ増減させると、パターンの変化が観察できます。-7から+5までの変化が印象的です。#1-200-420でも同様です

  • 暇つぶしにPythonで連続する素数の1の位(10進法)を比較してみたところ、面白い関係を見つけました。2と5は1回ずつしか登場しないので除外し、1->3, 1->5, ... のように各末尾数字間の遷移頻度を数えました。素数はランダムだと思っていたので、頻度はほぼ同じだろうと考えていましたが、むしろ統計的に有意な差がありました。なぜそうなるのかは、まだ誰にも分かっていません

  • 自分の直感では、素数はずっともっとまれで、数が大きくなるほどその減少率もずっと速いと思っていましたが、実際にはまだものすごく多いです。[1, 10,000, 10,000] でも下のほうはかなり密です。もちろん密度は下がりますが。平均的な素数間隔は log(n) です(prime number theorem