nばい基本因子

この記事は 合成数大富豪 Advent Calendar 2025 - Adventar 8日目の記事です.

昨日の記事は3TKさんの 『【合成数大富豪】合成数探索に使えるExcel関数』 でした.

はじめに

 C=n \times P のように  n の素数倍の合成数出しのことを「 nばい」と呼びます.
通常の意味での 「 n 倍」との混同を避けるため,ひらがなで「 nばい」と表記することにします.

 n が小さければ人力でも探索が可能なので,即興で合成数出しを作る方法として注目されています.
特に  2 ばいは高速で探索する方法が確立しているため, 全出しの  2 ばいを出して合成数勝ちを狙う戦術は実戦でも有用です.

 2 ばいをつくるときは「基本因子」を使うことで,高速な探索や組み替えを実現しています.
本記事では, 2 ばいから  9 ばいの基本因子を列挙して,基本因子を用いた  n ばいの人力探索の可能性を探ります.

定義

 n ばい基本因子を定義します. 下の画像の  2 ばいを例に考えます.

四角で囲われているような,素因数と合成数の同じ桁の部分の組を  n ばい因子と呼びます.
 n ばい因子のうち,赤い四角で囲われているこれ以上小さな因子に分解できないものを  n ばい基本因子と呼びます.

任意の  n ばい因子について,

  • 素因数側の数を  p
  • 合成数側の数を  c
  •  p と  c の桁数を  d
  • 下からの繰り上がりを  l
  • 上への繰り上がりを  u

とおくと,  n \times p + l = c + {10}^d \times u という式が成り立ちます.

ここでは,この  n ばい因子を  {}^{u}(p, c)^{l} と表すことにします.

結果

結果をすべて書くと長くなってしまうので, こちら に記載します.

考察

個数

n 個数  個数/n^{2}
2 40 10.00
3 76 8.44
4 80 5.00
5 98 3.92
6 120 3.33
7 138 2.82
8 222 3.47
9 258 3.19

繰り上がりパターンが同じ因子同士は入れ替えることができるため, 繰り上がりパターン数あたりの基本因子の個数が探索のしやすさに直結すると予想されます.

 n が  5 以上になると,基本因子の個数は多くなっているものの, 繰り上がりパターン数あたりの基本因子の個数は少なくなってしまっているため  2 ばいと同じように探すことは難しそうです.

即興で全出しを作る際に使える因子は, 2, 3, 4 ばいくらいまでだと思われます.

絵札の組み合わせ

絵札を2枚以上使う基本因子は以下の通りです.

n 個数
2 4
3 21
4 8
5 8
6 12
7 8
8 50
9 51
2 4 5 6 7
 {}^{0}(T5,2T)^{0}  {}^{0}(T2,4T)^{2}  {}^{0}(T2,5T)^{0}  {}^{0}(T1,6T)^{4}  {}^{0}(T1,7T)^{3}
 {}^{0}(T5,2J)^{1}  {}^{0}(T2,4J)^{3}  {}^{0}(T2,5J)^{1}  {}^{0}(T1,6J)^{5}  {}^{0}(T1,7J)^{4}
 {}^{0}(T6,2Q)^{0}  {}^{0}(T3,4Q)^{0}  {}^{0}(T2,5Q)^{2}  {}^{0}(T2,6Q)^{0}  {}^{0}(T1,7Q)^{5}
 {}^{0}(T6,2K)^{1}  {}^{0}(T3,4K)^{1}  {}^{0}(T2,5K)^{3}  {}^{0}(T2,6K)^{1}  {}^{0}(T1,7K)^{6}
 {}^{0}(Q7,5T)^{2}  {}^{0}(Q2,6T)^{0}  {}^{0}(J8,7T)^{2}  {}^{0}(J5,8T)^{5}
 {}^{0}(Q7,5J)^{3}  {}^{0}(Q2,6J)^{1}  {}^{0}(J8,7J)^{3}  {}^{0}(J5,8J)^{6}
 {}^{0}(Q8,5Q)^{0}  {}^{0}(Q2,6Q)^{2}  {}^{0}(J8,7Q)^{4}  {}^{0}(J6,8Q)^{0}
 {}^{0}(Q8,5K)^{1}  {}^{0}(Q2,6K)^{3}  {}^{0}(J8,7K)^{5}  {}^{0}(J6,8K)^{1}
 {}^{0}(K5,8T)^{0}
 {}^{0}(K5,8J)^{1}
 {}^{0}(K5,8Q)^{2}
 {}^{0}(K5,8K)^{3}
3 8 8 9 9
 {}^{0}(T3,3T)^{1}  {}^{1}(K,T)^{6}  {}^{4}(5Q6,TJ)^{3}  {}^{1}(Q,T)^{2}  {}^{0}(TQ,9J2)^{4}
 {}^{0}(T3,3J)^{2}  {}^{1}(K,J)^{7}  {}^{4}(5Q6,TQ)^{4}  {}^{1}(Q,J)^{3}  {}^{0}(TQ,9J3)^{5}
 {}^{0}(T4,3Q)^{0}  {}^{0}(T1,8T)^{2}  {}^{4}(5Q6,TK)^{5}  {}^{1}(Q,Q)^{4}  {}^{0}(TQ,9J4)^{6}
 {}^{0}(T4,3K)^{1}  {}^{0}(T1,8J)^{3}  {}^{4}(5K8,JT)^{6}  {}^{1}(Q,K)^{5}  {}^{0}(TQ,9J5)^{7}
 {}^{0}(K6,4T)^{2}  {}^{0}(T1,8Q)^{4}  {}^{4}(5K8,JJ)^{7}  {}^{0}(T1,9T)^{1}  {}^{0}(TQ,9J6)^{8}
 {}^{0}(K7,4J)^{0}  {}^{0}(T1,8K)^{5}  {}^{4}(5K9,JQ)^{0}  {}^{0}(T1,9J)^{2}  {}^{0}(TK,9J7)^{0}
 {}^{0}(K7,4Q)^{1}  {}^{0}(J3,9T)^{6}  {}^{4}(5K9,JK)^{1}  {}^{0}(T1,9Q)^{3}  {}^{0}(TK,9J8)^{1}
 {}^{0}(K7,4K)^{2}  {}^{0}(J3,9J)^{7}  {}^{0}(TQ,8T1)^{5}  {}^{0}(T1,9K)^{4}  {}^{0}(TK,9J9)^{2}
 {}^{2}(7T,K1)^{1}  {}^{0}(J4,9Q)^{0}  {}^{0}(TQ,8T2)^{6}  {}^{1}(Q3,1T)^{3}  {}^{0}(TK,9Q1)^{4}
 {}^{2}(7T,K2)^{2}  {}^{0}(J4,9K)^{1}  {}^{0}(TQ,8T3)^{7}  {}^{1}(Q3,1J)^{4}  {}^{0}(TK,9Q2)^{5}
 {}^{2}(7J,K3)^{0}  {}^{1}(K8,1T)^{6}  {}^{0}(TK,8T4)^{0}  {}^{1}(Q3,1Q)^{5}  {}^{0}(TK,9Q3)^{6}
 {}^{2}(7J,K4)^{1}  {}^{1}(K8,1J)^{7}  {}^{0}(TK,8T5)^{1}  {}^{1}(Q3,1K)^{6}  {}^{0}(TK,9Q4)^{7}
 {}^{2}(7J,K5)^{2}  {}^{1}(K9,1Q)^{0}  {}^{0}(TK,8T6)^{2}  {}^{1}(K4,2T)^{4}  {}^{0}(TK,9Q5)^{8}
 {}^{2}(7Q,K6)^{0}  {}^{1}(K9,1K)^{1}  {}^{0}(TK,8T7)^{3}  {}^{1}(K4,2J)^{5}  {}^{0}(TJ2,9TT)^{2}
 {}^{2}(7Q,K7)^{1}  {}^{4}(5Q,T1)^{5}  {}^{0}(TK,8T8)^{4}  {}^{1}(K4,2Q)^{6}  {}^{0}(TJ2,9TJ)^{3}
 {}^{2}(7Q,K8)^{2}  {}^{4}(5Q,T2)^{6}  {}^{0}(TK,8T9)^{5}  {}^{1}(K4,2K)^{7}  {}^{0}(TJ2,9TQ)^{4}
 {}^{2}(7K,K9)^{0}  {}^{4}(5Q,T3)^{7}  {}^{0}(TK,8J1)^{7}  {}^{0}(TJ,9T1)^{2}  {}^{0}(TJ2,9TK)^{5}
 {}^{2}(7T3,KT)^{1}  {}^{4}(5K,T4)^{0}  {}^{0}(TQ6,8TT)^{2}  {}^{0}(TJ,9T2)^{3}  {}^{0}(TQ3,9JT)^{3}
 {}^{2}(7T3,KJ)^{2}  {}^{4}(5K,T5)^{1}  {}^{0}(TQ6,8TJ)^{3}  {}^{0}(TJ,9T3)^{4}  {}^{0}(TQ3,9JJ)^{4}
 {}^{2}(7T4,KQ)^{0}  {}^{4}(5K,T6)^{2}  {}^{0}(TQ6,8TQ)^{4}  {}^{0}(TJ,9T4)^{5}  {}^{0}(TQ3,9JQ)^{5}
 {}^{2}(7T4,KK)^{1}  {}^{4}(5K,T7)^{3}  {}^{0}(TQ6,8TK)^{5}  {}^{0}(TJ,9T5)^{6}  {}^{0}(TQ3,9JK)^{6}
 {}^{4}(5K,T8)^{4}  {}^{0}(TK8,8JT)^{6}  {}^{0}(TJ,9T6)^{7}  {}^{0}(TK4,9QT)^{4}
 {}^{4}(5K,T9)^{5}  {}^{0}(TK8,8JJ)^{7}  {}^{0}(TJ,9T7)^{8}  {}^{0}(TK4,9QJ)^{5}
 {}^{4}(5K,J1)^{7}  {}^{0}(TK9,8JQ)^{0}  {}^{0}(TQ,9T8)^{0}  {}^{0}(TK4,9QQ)^{6}
 {}^{4}(5Q6,TT)^{2}  {}^{0}(TK9,8JK)^{1}  {}^{0}(TQ,9T9)^{1}  {}^{0}(TK4,9QK)^{7}
 {}^{0}(TQ,9J1)^{3}

 3, 8, 9 ばいは基本因子に含まれる絵札の組み合わせが多様です.
絵札を含む基本因子を覚えることで,絵札を多く消費できる合成数出しを探索・記憶する一助になるかもしれません.

おわりに

 2, 5, 10 ばい以外の  n ばいはまだほとんどのことが分かっていません.
実戦で様々な  n ばいを出せるようになるために,今後も研究を続けていきます.

明日の記事は3TKさんの 『【合成数大富豪】2026年の目標』 です.

10n±1チェック

この記事は 素数大富豪 Advent Calendar 2025 - Adventar 8日目の記事です.

昨日の記事はdilshさんの 『素数大富豪のリアルイベントに初参加した話』 でした.

はじめに

本記事では応用範囲の広い倍数判定法を紹介します.

これを習得すれば  41 までの素数の倍数判定がスムーズにできるようになります!

(理論上はすべての奇素数( := 2と 5以外の素数) の倍数判定で使うことができます.)

小さい素数の倍数判定には, 1001チェック, 2001チェック, 10013チェックなど複数の素数の倍数判定を同時に行うものもありますが,計算が少し大変です.

今回紹介する倍数判定方法はこれらの倍数判定法よりも楽に計算できます.

概要

 10n \pm 1 の倍数を足し引きすることで下の桁から順に  0 にしていきます.

 1 の位が  3 または  7 の素数は  3 倍することで  10n \pm 1 の形にできます.

計算方法

1の位が1の素数の倍数判定

 4247 が  31 の倍数かどうかを調べてみましょう.

まず, 1 の位を  0 にするために  31 \times 7 を引きます.

  •  4247 - 31 \times 7 = 4030

次に, 10 の位を  0 にするために  31 \times 30 を引きます.

  •  4030 - 31 \times 30 = 3100 = 31 \times 100

 31 の倍数を引いていって  31 の倍数が残ったので, 4247 が  31 の倍数であることがわかりました!

実際に計算するときは,下図のように一番下の桁を消して,その  3 倍を引くと考えると楽です.

1の位が7の素数の倍数判定

 57511 が  17 の倍数かどうか調べてみましょう.

 17 の倍数を計算するのは大変なので,代わりに  17 \times 3 = 51 の倍数を下の桁から引いていきます.

  •  57511 - 51 \times 1 = 57460
  •  57460 - 51 \times 60 = 54400
  •  54400 - 51 \times 400 = 34000 = 17 \times 2000

これで, 57511 が  17 の倍数であることがわかりました!

1の位が9の素数の倍数判定

 12293 が  19 の倍数かどうか調べてみましょう.

 19 の倍数を下の桁から足していくのですが,そのままだと難しいので,

 19 \times x = 20 \times x - x

を利用して, x を引いて  20 \times x 足すと考えます.

  •  12293 + 19 \times 3 = 12293 - 3 + 20 \times 3 = 12350
  •  12350 + 19 \times 50 = 12350 - 50 + 20 \times 50 = 13300
  •  13300 + 19 \times 300 = 13300 - 300 + 20 \times 300 = 19000 = 19 \times 1000

これで, 12293 が  19 の倍数であることがわかりました!

1の位が3の素数の倍数判定

 13639 が  23 の倍数かどうか調べてみましょう.

 23 の倍数を計算するのは大変なので,代わりに  23 \times 3 = 69 の倍数を下の桁から足していきます.

 69 の倍数を下の桁から足していくのですが,そのままだと難しいので,

 69 \times x = 70 \times x - x

を利用して, x を引いて  70 \times x 足すと考えます.

  •  13639 + 69 \times 9 = 13639 - 9 + 70 \times 9 = 14260
  •  14260 + 69 \times 60 = 14260 - 60 + 70 \times 60 = 18400
  •  18400 + 69 \times 400 = 18400 - 400 + 70 \times 400 = 46000 = 23 \times 2000

これで, 13639 が  23 の倍数であることがわかりました!

アレンジ

一番下の桁の数 xが 6以上のとき,

  •  x(10n+1) を引く代わりに, (10-x)(10n+1) を足す
  •  x(10n-1) を足す代わりに, (10-x)(10n-1) を引く

としても,一番下の桁の数を 0にすることができます. 計算に登場する数の絶対値が小さくなるので,こっちのほうが計算しやすい人もいるかもしれません.

チェックに使う数

実際にチェックに使う数を列挙します.

 41 まではチェックに使う数が小さいので実戦でも使いやすいと思います.

素数  10n \pm 1
7 21
11 11
13 39
17 51
19 19
23 69
29 29
31 31
37 111
41 41
43 129
47 141

おわりに

 10n \pm 1 チェックを習得してたくさんの素数に出会いましょう!

明日の記事はもりしーさんの「大会で活躍した音楽素数たち」です。

はち杯合成数大富豪 行動分析

この記事は 合成数大富豪 Advent Calendar 2024 - Adventar 8日目の記事です.

昨日の記事は3TKさんの 『【JK43型】ジャックとキングの30マス計算』(https://hana3101382283.hatenablog.com/entry/2024/12/7/Mahonare) でした.

ルール

はち杯合成数大富豪は以下のようなルールで開催しています.

  • 原則合成数出ししかできない.
  • 最後アガるときのみ3枚以下の素数出し(含 : X,57)が可能
  • 合成数でアガったら3pt
  • 素数でアガったら1pt

結果

※第7回は合成数勝ち1000ptで行いました.

※第8.5回は順位付けをしていません.

OTTYさんが強すぎる!私が優勝した第10回にOTTYは参加されてないので、OTTYさんは参加したすべての大会で優勝していることになります.

行動分析(回ごと)

回ごとのデータは以下のようになりました.

行動分析(回ごと)

意外なことに,ほとんどの数字に大きな変化はなさそうです.

しかし,合成数勝ち率が第21回以降大きく上がっており,組み切りの技術が向上してるのが分かります.

行動分析(人ごと)

人ごとのデータは以下のようになりました.(ルールが確定していない第7回,第8.5回は除いています.)

1ターンごとの値は,合計ターン数 = 参加した試合の合計ターン数 / 2 として計算しています.

行動分析(人ごと)

1ターン当たりのポイントはおおよそ単位時間あたりのポイントと等しいと考えられるので, 大会にフルで参加した時の獲得ポイントと大体比例すると考えられます.

また,試合数当たり・ターン数当たりの合成数勝ち・素数勝ちの回数を散布図にすると以下のようになりました.

散布図(合成数勝ち/試合数, 素数勝ち/試合数)

散布図(合成数勝ち/試合数, 素数勝ち/試合数)

OTTYさんの強さがよくわかります.

OTTYさん以外は団子になっているので,誰が最初にOTTYさんに追いつくか楽しみですね.

明日の記事はさしみさんの『でかい合成数を出した話』です.

はち杯開催報告 2024

この記事は 素数大富豪 Advent Calendar 2024 - Adventar 8日目の記事です.

昨日の記事はさしみさんの『7枚出し切り札カウンティング』でした.

はち杯とは

はち杯は素数大富豪をする機会を増やすことを目的としたカジュアル大会です.

  • 1日完結
  • 飛び入り参加,短時間の参加歓迎

の2点を軸にルールを作成しています.

はち杯のデータ・ルール等はこちら.

告知

  • 12/14(土) 13:00 ~ ライト級
  • 12/14(土) 20:00 ~ 24:00 ヘビー級Cルール

を開催します.気軽にご参加ください!

開催ルール

現在はち杯では以下の3つのルールで大会を開催しています.

ライト級

  • 開催時間 : 2時間程度
  • ルール : 1セット先取のリーグ戦(可能なら総当たり)

ライト級は運要素がとても強く,初心者の方も参加しやすいルールになっています.

1試合だけの参加も大歓迎なので気軽にご参加ください!

ヘビー級

  • 開催時間 : 4時間
  • 開催目的 : とにかくたくさん試合をする

4時間連続で素数大富豪をします。(順位決定方法はよく変わります.)

12月14日(土)は1試合4セットで行い,連続4試合の最大合計ポイントで競います.

短い時間の参加でも優勝できるルールになっているので,気軽に参加して頂けると嬉しいです.

参加される方は こちら でルールを確認してください.

合成数大富豪

  • 開催時間 : 4時間

原則合成数出ししかできない素数大富豪の変則ルールです.

とても難しいですが,一部の素数大富豪プレイヤーの間ですごく流行っています.

少し変わった素数大富豪を見に来て頂けると嬉しいです.

合成数大富豪のアドベントカレンダー もあるので是非ご覧ください.

結果

2024年に開催した大会の結果は以下の通りです.

No. ルール 開催日 曜 人数 優勝
15 ライト 01-20 土 7 カステラ
16 ヘビーA 01-20 土 6 mickey
17 合成数 03-16 土 10 OTTY
18 ヘビーB 03-20 水 6 mickey
19 ライト 05-06 月 7 mickey
20 ヘビーB 05-06 月 6 mickey
21 合成数 05-25 土 7 OTTY
22 ライト 08-03 土 6 3TK
23 ヘビーB 08-03 土 7 マリン
24 ライト 10-19 土 5 カステラ
25 合成数 10-19 土 7 OTTY
26 ライト 12-14 土 6 さしみ
27 ヘビーC 12-14 土 7 マリン

今年も多くの方にご参加いただきました。ありがとうございました!

明日の記事はさしみさんの『9枚9桁の新しい覚え方』 です.

第9~14回はち杯開催報告&来年のはち杯について

 

この記事は、 素数大富豪 Advent Calendar 2023 - Adventar の9日目の記事です。

昨日の記事はふみ川さんによる、博物ふぇす2023素数大富豪ブース振り返りでした。私も博物ふぇす2023に参加させて頂いたのですがとても楽しかったです!こういったイベントは今後も参加していきたいですね。

はじめに

告知

来年1月にはち杯ライト級・ヘビー級Aルールを開催します!

ライト級は1セット先取の総当たりで行います。初心者の方でも楽しめるルールとなっていますので、気軽に参加してください!

ヘビー級Aルールも総当たりですが、約30分同じ相手と対戦してもらいます。

開催日は1月の土日祝の中から参加者の希望を聞いて決定します。

時間帯は、

  • ライト級 : 13時~16時(途中参加・途中退出・飛び入り参加歓迎)
  • ヘビー級Aルール : 19時~22時(全時間参加必須)

の予定です。皆さんのご参加お待ちしています!

関連リンク

今年開催したはち杯一覧

今年開催したはち杯は以下の通りです。

反省点

開催回数が少なかった

今年は「ライト・ヘビー・合成数を同時に開催する」という方針をとったので、自分の中で開催するハードルが高くなってしまいました。

告知の回数が少なかった

私が忙しかったこともあり、告知する回数が少なくなってしまいました。少なくとも開催前日と1週間前には告知するようにします。

ヘビー級Aルールを開催できなかった

ヘビー級Aルールは全ての参加者が最初から最後まで参加する必要があります。

そのため日程調整がうまくいかず、開催することができませんでした。

良かった点・嬉しかった点

参加者数が増えた

特に11月はとても多くの方に参加していただきました。 飛び入りで参加される方も多かったので、今後も飛び入り参加できる形で開催していきます。

来年のはち杯について

今年の反省点を踏まえ、来年のはち杯は以下のようにしたいと考えています。

月3回開催から月2回開催にする

月3回の開催はできないことがあるので、月2回の開催にします。その代わりに開催頻度を高くしようと思います。

ヘビー級Aルールを開催する

ガチめの試合をたくさんしたいという需要は一定数あるので、来年はヘビー級Aルールを開催したいと思います。 日程調整が難しい点に関しては、こちらで時間帯を指定することで改善すると考えています。(19時~22時, 21時~24時 の2種類の時間帯で開催する予定)

明日はΑσαγγηさんの『今度こそ4枚8桁を覚える』です。

 

第7回はち杯合成数大富豪 データまとめ

 

この記事は、素数大富豪 Advent Calendar 2022 24日目の記事です。

本記事では12/04に行われた第7回はち杯合成数大富豪の結果を振り返っていきます。

1. ルール

今回はだいたい以下のようなルールで行いました。

  • 基本的には合成数出ししかできない。
  • ただし、最後あがるときだけ3枚以下の素数(X,57含む)を出してあがれる。
  • 試合時間が20分を超えても試合が終わらなさそうであれば引き分けにする。
  • 点数で順位を決める。

点数配分は

  • 合成数あがり : 1000点
  • 1枚素数あがり : 5点
  • 2枚素数あがり : 4点
  • 3枚素数あがり : 3点
  • 引き分け : 1点
  • 負け : 0点

合成数あがりの点数を極端に大きくしたのは、合成数のみであがる試合をたくさん見たかったからです。

詳しくは大会概要をご覧ください。

2. 試合結果

試合結果は以下のようになりました。

表1. 試合結果

 

全部で46試合行い、合成数勝ち18回素数勝ち38回引き分け1回となりました。

こんなに合成数だけで上がれるんですね...すごすぎる...

私も大会前に少しテストプレイをしたのですが、その時は合成数あがり全然できなかったです。

3. 行動分析

全46試合の行動を表にまとめました。

表2. 行動分析

 

「パス+時間切れ≒合成数出し」なので手番をとって主導権を握ることよりも、 手札を組み切ることの方が重要であることが分かります。(今のところは)

4. 試合時間

全46試合の試合時間の分布です。

グラフ1. 試合時間の分布

 

5分と13分のところにピークがあります。数譜を確認したところ、 5分の試合は初期手札を2,3個の合成数で組み切って勝利、 13分の試合は相カマトトから5,6個の合成数で組み切って勝利している試合が多かったようです。 また28~34分のところに大きな空白があるので、次回以降の制限時間は30分にしようと思います。

5. 出された合成数

5.1 枚数分布

グラフ2. 枚数ごとの個数分布

 

2,3枚が圧倒的に多いですね。2枚出しが大体5枚消費、3枚出しが大体7枚消費であることを考えると、 前章の「初期手札を2,3個、カマトト後の手札を5,6個の合成数で組み切る」という戦い方とも整合しています。

5.2. ランキング

表3. 出された合成数のランキング(2回以上)

 

表4. 出された合成数のランキング(1回)

 

KQとKKが14回で同率1位でその下に絵札と偶数の消費が多い2,3枚出しが並んでいます。

通常の素数大富豪と比べると1位があまり突出していない印象です。

4枚出し以上の合成数はその場で作りやすい10や1001の倍数がほとんどでした。

それら以外は、小さい素数の冪乗、重複のない組み合わせ、n枚2n桁、など個々人の対策の成果が感じられます。

6. まとめ

今回の合成数大富豪では、「手札を2,3枚出しで分け切って、手番が回ってくるのを待つ」という戦い方が多かったです。 これから戦い方は大きく変わっていくと思うので、今後の研究に期待したいです。

7. 関連記事・リンク

・合成数大富豪が楽しかった話~第7回はち杯に参加しました (OTTYさん)

・指数表記多用型合成数と平方数型合成数 (mickeyさん)

・HNC入門

・はち杯フォルダ(GoogleDrive)

・重複なし合成数一覧(GoogleDrive)

HNC入門

 

この記事は、 素数大富豪 Advent Calendar 2022 - Adventarの22日目の記事です。

昨日の記事はまだありません。

一昨日の記事はマモさんによる、時間についてでした。

プレイヤーとしても、大会運営者としても、とても興味深い内容でした!

1. HNCとは

HNCとは、"Hello New Composite Number!" の略で、合成数に出会うことを指します。

そんなこと可能なのか?と思われる方もいるかもしれませんが、「等式は正しいが使用している素因数が素数かどうか分からない合成数出し」 をして合成数出しが成功すれば合成数に出会ったことになります。なので、HNCは素因数に出会っているということもできます。

(覚えていない合成数出しをその場で作っても、その合成数出しが正しいことが出す前に分かっている場合は、 ある意味合成数に出会ってはいますが、これをHNCと呼ぶことはないです。)

(理論上、「使用している素因数が素数であることは知っているが等式が成り立つかわからない合成数出し」 に出会うのもHNCと言えますが、確率が低すぎるので無視します。)

 

今回は主に、$ N=2*P $ という形の合成数出しの作り方を解説していきます。

2. きっかけ

私が素数大富豪を始めたばかりのころ、周りの強い方との知識の差に悩まされていました。 私は覚えるのがあまり得意ではないので、知識の差を他の所でカバーできないかと考えました。 そこで、「合成数をその場で作る」という方法を思いつき、考察を始めました。 考察をするうちに、合成数出しの「トランプを使って式を作る」というパズル的な側面に惹かれ、合成数出しについて色々研究するようになりました。

3. 凡例

本記事では以下の記号を使います。

  • $ATJQKX$ 以外のアルファベット : カード列
  • $(大文字アルファベット)_n$ : (高々)n桁のカード列
  • $NM$ : NとMを結合したもの

本題に入る前に作るのが簡単な合成数を紹介します。

4. 10の倍数

1番簡単な合成数出しです。

$ N=2*5*P $ という形で書けますが、$N$の末尾には基本的に$T$を使うため、$P$の末尾は$A$か$J$になります。

なので、

  • $NT=2*5*NA$
  • $NAT=2*5*NJ$

という形が一般的です。

5. 繰り返し

同じ数字を繰り返すのも計算がしやすくて便利です。(同じ札をたくさん使う点に注意)

5.1 周期1

  • $P_1 P_1 = J*P_1$
  • $P_1 P_1 P_1 = 111*P_1 = 3*37*P_1$
  • $P_1 P_1 P_1 P_1 = 1111*P_1 = J*TA*P_1$
  • etc.

5.2 周期2以上

  • $P_2 P_2 = TA*P_2$
  • $P_3 P_3 = 1001*P_3 = 7*J*K*P_3$
  • $P_4 P_4 = 10001*P_4 = 73*137*P_4$
  • etc.

他にもたくさんありますが割愛します。

6. 例題

それでは本題に...と行きたいところですが、最初にいった通り$N=2*P$という合成数出しにはパズル的な面白さがあります。 なので、これから書く解説はある意味「パズルのネタバレ」的な要素が含まれます。 ネタバレされたくない方は、以下の例題を解いてから先に進んでください。 (例題ではパズルとして成立させるために、解は1つしかありません。また、素数判定は13以下の倍数判定のみで十分になるように作問しました。)

  1. "$ 21248 $"
  2. "$ 21347 $"
  3. "$ 2112389 $"
  4. "$ 2357789 $"
  5. "$ 21244577 $"
  6. "$ 2467K $"
  7. "$ 22457Q $"
  8. "$ 2445679K $"
  9. "$ 21225TT $"
  10. "$ 2235566TJQ $"

下にスクロールすると解法があります。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7. 解法

以下、

  • $P=p_a p_{a-1} ... p_1 p_0$
  • $N=n_a n_{a-1} ... n_1 n_0$
  • $p_i$と$n_i$の桁数は等しい

とします。

($p_i, n_i$ は枚数の少ないカード列だと思ってください)

($P_n$と紛らわしいですがこれ以降$P_n$は使わないのでご了承ください。良い表記があれば教えていただけると嬉しいです。)

7.1 基本解法

$p_0,n_0,p_1,n_1,...,p_i,n_i,...$

の順でカードを決めていくことで合成数出しを作ることが出来ます。

例)例題2

$p_0=7$とすると、$n_0=4$となります。

$p_1=1$とすると、1の位から繰り上がりがあるため$n_1=3$となります。

以上より、$34=2*17$を作ることが出来ました!。

 

これが分かれば$N=2*P$の形の合成数出しはできるので、練習してみてほしいです。

素数大富豪オンラインで練習する場合は、下の画像のようにカードを並べると分かりやすいと思います。$(X=2)$

私もこの並べ方を使っています。

※素数大富豪オンラインでは、「等式は正しいけど合成数出し失敗」のとき「~を出しましたが、~は素因数ではありません」というメッセージが出ます。

7.2 実戦的な解法

基本解法だけだと戦略としてこの合成数出しをするのは難しいので、以下のような考え方で合成数を作るスピードを速くします。

7.2.1 1桁札のみの場合

$p_i,n_i$が1桁のとき、数の組 $ (p_i, n_i) $ は以下の20通りしかありません.

$ (p_i, n_i)= $

$ (0,0),(0,1),(1,2),(1,3), $

$ (2,4),(2,5),(3,6),(3,7), $

$ (4,8),(4,9),(5,0),(5,1), $

$ (6,2),(6,3),(7,4),(7,5), $

$ (8,6),(8,7),(9,8),(9,9) $

また、下の桁からの繰り上がり、上の桁への繰り上がりの有無で分類すると、

  下から 上へ          
$ I $ 無 無 $ (0,0) $ $ (1,2) $ $ (2,4) $ $ (3,6) $ $ (4,8) $
$ II $ 有 無 $ (0,1) $ $ (1,3) $ $ (2,5) $ $ (3,7) $ $ (4,9) $
$ III $ 無 有 $ (5,0) $ $ (6,2) $ $ (7,4) $ $ (8,6) $ $ (9,8) $
$ IV $ 有 有 $ (5,1) $ $ (6,3) $ $ (7,5) $ $ (8,7) $ $ (9,9) $

となります。また、下からの繰り上がりがある $ (p_i, n_i) $ の個数と上への繰り上がりがある $ (p_i, n_i) $ の個数は等しいので、

  • $ II $ と $ III $ は同じ個数
  • $ IV $ が1個以上あるとき、 $ II, III $ も1個以上必要

であることが分かります。

以上の条件を満たすように手札をいくつかの2枚のカードの組に分けることが出来れば、$ N=2*P $ の形の等式を作ることが出来ます。

絵札がある場合も考え方はほぼ同じで、$ p_i,n_i $ が2桁以上の場合を考えればよいです。

7.2.2 $ p_i,n_i $ が2桁のとき

$ (p_i, n_i)=(10,?),(11,?),(12,?),(13,?),(?,10),(?,11),(?,12),(?,13), $

これはそれぞれの組に2つずつの解があり、

$ (p_i, n_i)= $

$ (10,20),(10,21),(11,22),(11,23), $

$ (12,24),(12,25),(13,26),(13,27), $

$ (05,10),(55,10),(05,11),(55,11), $

$ (06,12),(56,12),(06,13),(56,13), $

となります。これを1桁札と同様に4つに分類すると、

  下から 上へ            
$ I $ 無 無 $ (10,20) $ $ (11,22) $ $ (12,24) $ $ (13,26) $ $ (05,10) $ $ (06,12) $
$ II $ 有 無 $ (10,21) $ $ (11,23) $ $ (12,25) $ $ (13,27) $ $ (05,11) $ $ (06,13) $
$ III $ 無 有 $ (55,10) $ $ (56,12) $
$ IV $ 有 有 $ (55,11) $ $ (56,13) $

となります。

7.2.3 $p_i,n_i$ が3桁以上のとき

3桁以上で考える必要があるものは以下の4つのみです。

  下から 上へ    
$ I $ 無 無 $ (105,210) $ $ (106,212) $
$ II $ 有 無 $ (105,211) $ $ (106,213) $

これらで考えるべきものが網羅できていることの確認は演習問題とします。

8. 実戦例

1. まず2をどけます。

2. 絵札が2枚あるので、$(p_i,n_i) = (T6,2K)$とします。

3. $p_0$の候補が9しかないので、$(p_0,n_0)=(9,8)$とします。

4. 残り4枚の分け方は(5,1),(4,8)しかありません。

5. 順番を並び替えます。繰り上がりの有無から、

  • $(5,1)$は$(T6,2K)$と$(9,8)$の間に入る。
  • $(4,8)$は末尾には来ない。

となるので、

$(p_0,n_0,p_1,n_1,p_2,n_2,p_3,n_3)=(9,8,5,1,T6,2K,4,8)$

となります。

6. 通常の並べ方に戻して出します。

9. おわりに

大会でのHNCを私以外がやっているところを見たことがないので、HNCが出る試合を観戦できることを楽しみにしています。

明日以降の記事は全く埋まっていません!書いてくれる方をお待ちしています。