2
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?

カプレカ数

Posted at

こんにちは|こんばんは。カエルのアイコンで活動しております @kyamaz :frog: です。

はじめに

最近 :frog: のエントリでは「娯楽数学」というジャンルを取り上げており、名前のついた合成数1を数回に渡り紹介してきました。今回の本稿でも特徴的な数字遊びでもある『カプレカ数』について紹介します。また、カプレカ数を求めるHaskellプログラム(決して効率的ではないです)も紹介します。

カプレカ数

カプレカ数を定義する前に『カプレカ操作』という数字の計算を定義します。

カプレカ操作
正の整数 $n$ に対して、次の減算で得られる整数 $K(n)$ を求める操作を『カプレカ操作』といいます。

「$n$ の各桁を大きい順に並べた数」-「$n$ の各桁を小さい順に並べた数」

例えば、
$n=175$ のときは、$K(175) = 751 - 157 = 594$
$n=3003$ のときは、$K(3003) = 3300 - 33 = 3267$
となります。

この操作を使ってカプレカ数は次のように定義されます。

カプレカ数
カプレカ操作で不変な数、つまり $K(n) = n$ を満たす正の整数 $n$

注:「カプレカ数」という言葉を別の意味で使うこともあります。2

この数の名称は、インドの数学者カプレカル(Kaprekar)に由来します。彼は大学院教育を受けていませんでしたが、学校の教師として働いて、広範囲にわたったレクリエーション数学の執筆を行い、カプレカ数のほかに「自己数(コロンビア数)」「ハーシャッド数」「デムロ数」なども定義しています。

カプレカ数は、3桁では $495$ のみ、4桁では $6174$ のみで、5桁のカプレカ数は存在しません。最初のリストは、オンライン整数列大辞典の数列 A099009 を参照してください。

カプレカ数を求めるプログラム

さて、カプレカ数を求めるプログラムをHaskellで実装してみましょう。

カプレカ数の数列を出力する
kaprekars = [x | x <- [0..], mod x 9 == 0, k x == x] where k n = big n - small n where big = read . reverse . sort . show :: Integer -> Integer; small n = read $ sort $ show n :: Integer

決して効率的ではありませんが、このプログラムをGHCiで実行してみると次のように出力されます。(オンライン整数列大辞典のリストと同じように出力されます)ちなみに、9の倍数であること(mod x 9 == 0)は簡単に示せるためプログラムではチェックする数を減らすために条件として入れてあります。

カプレカ数の出力
ghci> kaprekars
[0,495,6174,549945,631764,63317664,97508421,554999445,864197532^CInterrupted.

無限リストを出力するプログラムですので適当なタイミングで Ctrl-C で処理を中止しました。なお、:frog: の環境ではかなりの時間を要しました。

おわりに

もう少し効率的にできないかとも思いますが、本稿では定義に比較的忠実にプログラムを書きました。もし良いアイディアがあれば試してみてください。

最後に、本稿を記載するために検証したHaskell環境を記しておきます。お手元の環境で検証する際に、動作が異なるときには参考になるかもしれません。

本稿の環境

本稿のために使用した環境は以下となります。

  • macOS: Sonoma 14.6.1 (chip: Apple M1)
  • GHCup: 0.1.30.0
  • GHC: 9.6.6

ご一読いただきまして有り難うございます。
(●)(●) Happy Hacking!
/"" __""\

  1. ラッキー数とハッピー数, ヴァンパイア数, スミス数, キース数

  2. ある自然数 $n$ を2乗した数の上位の半分と下位の半分とに分けて和を取ったとき、その和が元の値 $n$ に等しくなる自然数 $n$ のことを「カプレカ数」という定義もあります。

2
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
2
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?