システムに挑戦する アンドールシステムサポート株式会社

MENU

下降数について

下降数について

扇数とは? / 扇関数を求める計算式 / 扇関数の特長 / 扇数の関連動画
下降扇数とは? / 下降・扇関数が他の扇数の体系に及ぼす影響について
櫛数とは?下降・櫛数とは?
金字塔数とは? / 完成・金字塔数とは?下降・完成・金字塔数
扇階段数について下降・扇階段数
逆扇階段数とは?下降・逆扇階段数
扇数について 櫛数について 金字塔数について 扇階段数について 下降数について 図解

扇数とは?

1, 11, 111, …, 1111111111のように、1の連続だけで表す事ができる数の事を扇数と呼ぶ事にしました
トランプカードでエースは「1」を示す記号です。
エースの札だけを沢山用意し、扇の様に広げた際に、それぞれの札を、各桁の数値と見立てて得られる値を、ここでは扇数と呼ぶ事にします。


「扇数」は数学的な専門用語では、repunit (repeated unitの省略)で、「レプユニット」、または「レピュニット」と呼ばれ、「単位反復数」とも訳されます。
このページやアンドールシステムサポートのYouTubeちゃんねる、電脳寺子屋 数学を学ぶシリーズの中では、出来るだけ短く表記したいので、「扇数」と呼ぶ事にします。


扇関数を求める計算式

\(x \geqq 0\) で、\(x\) は整数の値とした場合、\(n\)進数\((base = n)\)の\(x\)桁の扇数を返す関数を\(A(x, base = n)\)とした場合下記の式で表す事ができます。

\(A(x, base = n)\) \(=\displaystyle \sum_{k=0}^{x-1}n^{k}\) \(= \displaystyle \frac{n^x-1}{n-1}\)

扇関数の特長

扇関数は、引数\(x = 0\)の場合には、全ての進数で0を返します。
\( A(0, base = n) = 0 \)

扇関数は、引数\(x = 1\)の場合には、全ての進数で1を返します。
\( A(1, base = n) = 1 \)

扇数の関連動画

アンドールシステムサポートのYouTubeちゃんねるでは「扇数」を題材とし、組み込みの開発に役立つ解説を行っております。

電脳寺子屋 数学を学ぶ「扇数と再帰関数」

扇関数を例に、再帰関数と組み込みにおけるスタック・メモリの影響について説明ます。

電脳寺子屋 数学を学ぶ「扇数とPython」- Pythonのすすめ

扇関数をC言語で実装した例と、Pythonで実装した例を通して、C言語に馴染んでいる方向けに、C言語の記述例とPythonの記述例を比較する形で、 Pythonの文法や特長の一部を紹介させて頂きます。

下降・扇数とは?

扇数は整数から、浮動小数点へ拡張して考える事ができます。

通常の扇数(repunit)は桁数が増えると、上位の桁に向かって上昇する方向に値が増えます。

\(1\), \(11\), \(111\), \(111\ldots1\)

下記の式は、上昇(Ascending)方向に広がる扇数を返す(上昇)扇関数\(A(x)\)となり、常に整数の値となります。

扇関数 A()の概念図 10進数の扇数を返す扇関数の式:
\(A(x)=\displaystyle \sum_{k=0}^{x-1}10^{k}\)

n進数の扇数を返す扇関数の式:
\(A(x, base = n)=\displaystyle \sum_{k=0}^{x-1}n^{k}\)


下記に示すように、下位の桁に向かって下降する方向に値が増える扇数も考える事ができます。

\(1\), \(1.1\), \(1.11\), \(1.11\ldots1\)

下記の式は、下降(Descending)方向に広がる扇数を返す関数となり、小数点以下の桁数が増えていきます。


下降・扇関数 A'()の概念図 10進数の下降・扇数を返す下降・扇関数の式:
\(D(x)=\displaystyle \sum_{k=0}^{x-1}10^{-k}\)

n進数の下降・扇数を返す下降・扇関数の式:
\(D(x, base = n)=\displaystyle \sum_{k=0}^{x-1}n^{-k}\)

下降方向に広がる扇数である下降扇数を返す下降扇関数\(D(x)\)は、上昇方向に広がる扇数と組み合わせて利用することで、浮動小数点のデーター型を利用し、小数点以下の値も意味を持つ関数に対し、ブラックボックス・テスト用の入力値として役立つ値になると考えられます。
また、この後、紹介する櫛数や金字塔数等の概念と組合わせて利用する事もできます。

浮動小数点演算では、仮数の桁に収まらない値は、最下位の値が(利用されるライブラリやハードの設定に従って)切り捨てや丸めなどの処理が行われるため、下位の値の精度が下がります。
アンドールシステムサポートのYouTubeちゃんねる「電脳寺子屋」の動画の中で取り上げる予定ですが、浮動小数点の演算では、演算を行う順序によって、求める事ができる値の精度が変化します。
複数の値を足し合わせる場合には、絶対値の小さな値どうしを順番に足し合わせたものの方が、絶対値の大きな値と小さな値を足し合わせたものよりも、精度が高い値となります。

扇関数\(A()\)に対し、\(n\)進数の底の値に、マイナス\(x-1\)の累乗の値を掛けて得られる値を返す関数を\(A'()\)関数とした場合、このA’関数の返す値は、下降扇関数\(D()\)で得られる値と一致します。

10進数の下降・扇関数を求める式:
\( D(x) \) \( = A'(x) = A(x) \times 10^{x-1} \)

n進数の下降・扇関数を求める式:
\( D(x, base = n) \) \( = A'(x, base = n) = A(x, base = n) \times n^{x-1} \)

下降・扇関数が他の扇数の体系に及ぼす影響について

扇関数\(A()\)を利用して定義された関数は、扇関数\(A()\)を下降・扇関数\(A'()\)に置き換える事で、小数点の方向に桁が拡大する関数を定義する事ができます。

櫛数とは?

数値の各桁の値を数列と見なし、「1」を櫛の歯、「0」を隙間と見なす、「1」と「0」だけの値からなる数値を櫛数と呼ぶ事にしました。

櫛は、髪を梳かすための道具として、等間隔に設けられた複数の歯が付いた道具です。
例えば、櫛歯の本数が4本、隙間を1本とした場合の櫛数は「1010101」となり、 歯の本数が4本、隙間を2本とした場合の櫛数は「1001001001」となり、 歯の本数が4本、隙間を3本とした場合の櫛数は「1000100010001」となります。
また、隙間の数を0本とした場合は、「1111」となり扇数そのものになります。

櫛歯の本数を\(x\)とし、隙間を\(s\)とする櫛数を返す櫛関数\(C()\)は下記の式で定義する事ができます。

櫛関数 C()の概念図

10進数の櫛関数を求める式:
\(C(x, s) = A(x, base = 10^{s + 1})\)

n進数の櫛関数を求める式:
\(C(x, s, base = n) = A(x, base = n^{s + 1})\)

下降・櫛数とは?

櫛数を返す関数\(C()\)の式を構成する、扇関数\(A()\)を、下降・扇関数\(A'()\)に置き換える事で、小数点方向に桁が拡大する。下降・櫛数を返す関数\(C'()\)を作る事ができます。

櫛歯の本数を\(x\)とし、隙間を\(s\)とする櫛数を返す下降・櫛関数\(C'()\)は下記の式で定義する事ができます。

下降・櫛関数 C'()の概念図

10進数の下降・櫛関数を求める式:
\(C'(x, s) = A'(x, base = 10^{s + 1})\)

n進数の下降・櫛関数を求める式:
\(C'(x, s, base = n) = A'(x, base = n^{s + 1})\)

金字塔数とは?

扇数どうしを掛け合わせて得られる値を、金字塔数と呼ぶ事にしました。

10進数の金字塔数を求める式:

\(A(x_a) \times A(x_b) = p\)

n進数の金字塔数を求める式:

\(A(x_a, base = n) \times A(x_b, base = n) = p\)

扇数どうしを掛け合わせることで得られる数値\(p\)を、このページやアンドールのYouTubeちゃんねるの中では金字塔数と呼ぶ事にしました。

上記の式で\(x_a = x_b\) の際に得られる値を完成・金字塔数と呼ぶ事にします。

完成・金字塔数とは?

同じ進数で同じ桁数の扇数を自乗して得られる値の事を完成・金字塔数と呼ぶ事にしました。

完成・金字塔関数P()の概念図

10進数の完成・金字塔数を求める式:

\( P(x) = A(x) ^2 \)

n進数の完成・金字塔数を求める式:

\( P(x, base = n) = A(x, base = n) ^2 \)

12,345,678,987,654,321のように、扇数(repunit)を自乗して得られる値の事を数学の世界ではデムロ数(Demlo numbers)と呼んでいます。

English版のWikipediaの記述によると、インドのD. R. Kaprekar氏(1905-1986)によりデムロ数(Demlo numbers)と命名された数とされており、参考文献がGunjikar, K. R.: Kaprekar, D, R (1939). “Theory of Demlo numbers” . J. Univ. Bombay. VII(3):3-9.という記載がありますが、Albert H. Beiler氏の著書RECREATIONS IN THE HORY OF NUMBERS – THE QUEEN OF MATHEMATICS ENTERTAINSのCHPATER VIII – DIGHITS-AND THE MAGIC OF NUMBERSの63ページに記載されているTABLE29の中でREPUNITの自乗として既に定義が記載されおり、尚且つこちらの表はF. B. Selkin in the Teachers College Record, Vol. 12, p. 68からの引用したものであるという記載があります。
このAlbert H. Beiler氏の著書の参考文献の一覧ページ66ではSelkin, F. B “Number Games Bordering on Arithmetic and Algebra, ” Teachers College Recored, 13 (1912), 68.とありますので、K. R. GUNJIKAR氏とD. R. KAPREKAR氏の独立再発見と考えられます。

金字塔数の詳細について

下降・完成・金字塔数

完成・金字塔数を返す関数\(P()\)の式を構成する、扇関数\(A()\)を、下降・扇関数\(D()\)に置き換える事で、小数点方向に桁が拡大する。下降・完成・金字塔数\(P'()\)を返す関数を作る事ができます。

下降・完成・金字塔関数 P'()の概念図

10進数の下降・完成・金字塔数を求める式:

\(P'(x) = P(x) \times 10^{(x \times 2) -2}\) \(= A'(x, base = n)^2\)

n進数の下降・完成・金字塔数を求める式:

\(P'(x, base = n) = P(x, base = n) \times n^{(x \times 2) -2}\) \(= A'(x, base = n)^2\)

扇階段数について

\(1, 12, 123, \ldots , 123456789\)のように、\(1\)桁の扇数から\(x\)桁の扇数までの順番に連続した値を、足し合わせて得られる値を、扇階段数と呼び、この値を返す関数を扇階段関数 \(S(x)\)と呼ぶ事にしました。 \(s = 1 + 11+ 111 + \cdots + 111\ldots1\)

上記の式で求まる\(s\)を扇階段数と呼びます。

\(x\)桁のまでの扇数の合計で得られる階段数を求める関数を、扇階段関数 \(S(x)\)とした場合に、扇関数\(A(x)\)を利用すると下記の様に定義する事ができます。

\(S(x) = A(1) + A(2) + A(3) + \cdots + A(x)\)

つまり、扇階段関数は一般項を扇数とする数列の総和と言えます。

総和の記法である、Σ(シグマ)を利用して、のx桁の扇数を返す扇関数を記述すると下記式になります。

扇階段関数 S()の概念図

10進数の場合には下記の式が成り立ちます

\(S(x)=\displaystyle \sum_{k=1}^{x}A(k)\)

n進数の場合には下記の式が成り立ちます

\(S(x, base = n)=\displaystyle \sum_{k=1}^{x}A(k, n)\)

扇階段数の詳細について

逆扇階段数とは?

扇階段数の最上位から最下位までの桁値を入れ替えた値を逆扇階段数と呼び、この値を返す関数\(R()\)を逆扇階段関数と呼ぶ事にします。

逆階段関数 R()の概念図\(x\)桁の逆扇階段数を返す関数\(R(x)\)を逆扇階段関数と呼ぶ事とした場合、下記の式で表される逆扇階段関数の式は、 10進数の場合は、整数\(x\)の値が、\(10 > x \geqq 0\) での範囲で、\(S(x)\)の返す値の最上位から最下位の桁の値を入れ替えたものと一致します。

\(R(x) = (x + 1) \times A(x) – S(x)\)

\(n\)進数で考えた場合は、逆扇階段関数\(R(x, base = n)\)、整数\(x\)の値が、\(n > x \geqq 0\) での範囲で、\(S(x, base = n)\)の返す値の最上位から最下位の桁の値を入れ替えたものと一致します。

\(R(x, base = n) = (x + 1) \times A(x, n) – S(x, n)\)
逆扇階段数の詳細について

下降・扇階段数

扇階段数を返す関数\(S()\)の式を構成する、扇関数\(A()\)を、下降・扇関数\(A'()\)に置き換える事で、小数点方向に桁が拡大する。下降・扇階段数を返す関数\(S'()\)を作る事ができます。

下降・扇階段関数 S'()の概念図

10進数の場合には下記の式が成り立ちます

\(S'(x)=\displaystyle \sum_{k=1}^{x}A'(k)\)

n進数の場合には下記の式が成り立ちます

\(S'(x, base = n)=\displaystyle \sum_{k=1}^{x}A'(k, n)\)

扇数では、桁数に関係なく、金字塔数では、n進数でn-1桁までのでは最上位の桁から最下位までの桁を入れ替えても値は変わりませんが、 扇階段数では進数でn-1桁までのでは最上位の桁から最下位までの桁を入れ替えた場合、値が変わってしまいます。
\(0\)から\(x\)までの、下降・扇数関数の総和で得られる下降・扇階段数では、連続性が保たれる\(x \lt n\)桁までの範囲では、整数の桁に含まれる値が最大となり、小数点以下の桁は、最下位の桁に近づくにつれて、各桁に入る値は減少して行きます。 そのため、逆扇階段数に対し、桁合わせを行った値と一致する事になります。

10進数の場合には下記の式が成り立ちます

\(S'(x)=\displaystyle \sum_{k=1}^{x}A'(k)\) \(=R(x) \times 10 ^{1-x}\)

n進数の場合には下記の式が成り立ちます

\(S'(x, base = n)=\displaystyle \sum_{k=1}^{x}A'(k, n)\) \(=R(x, n) \times n ^{1-x}\)

下降・逆扇階段数

逆扇階段数を返す関数\(R()\)の式を構成する、扇関数\(A()\)を、下降・扇関数\(A'()\)に置き換え、扇階段関数\(S()\)を、下降・扇階段関数\(S'()\)に置き換える事で、小数点方向に桁が拡大する。下降・逆扇階段数を返す関数\(R'()\)を作る事ができます。

下降・逆扇階段関数 R'()の概念図

10進数の場合には下記の式が成り立ちます

\(R'(x)= (x+1) \times A'(x)-S'(x) \)

n進数の場合には下記の式が成り立ちます

\(R'(x, base = n)= (x+1) \times A'(x, n)-S'(x, n) \)

扇数では、桁数に関係なく、金字塔数では、\(n\)進数では、\(x \lt n\)までは最上位の桁から最下位までの桁を入れ替えても値は変わりませんが、 逆扇階段数では\(n\)進数で\(1 \lt x \lt n\)までの範囲では最上位の桁から最下位までの桁を入れ替えた場合、値が変わってしまいます。
\(n\)進数で\(1 \lt x \lt n\)までの範囲で、下降・逆扇数関数では、小数点以下の、最下位の桁に入る値が最大となり、整数の桁に含まれる値は\(1\)となります。 そのため、扇階段数に対し、桁合わせを行った値と一致する事になります。

10進数の場合には下記の式が成り立ちます

\(R'(x)= S(k) \times 10 ^{1-x}\)

n進数の場合には下記の式が成り立ちます

\(R'(x, base = n)= S(k, n) \times n ^{1-x}\)

Arm社純正開発ツール

Arm社純正開発ツール

お知らせ

PAGETOP