N.Y.Cityのまちかど

extended7-5-3

拡張七五三(しちごさん)

はじめに

タイトルだけ見てもまったく何のことかわからないのではないかと思う。

或る日、私が担当する作品制作の授業を受けていた学生Yが(なんでそんな発想に至ったのか前後関係がまったくわからないのだが)「七五三(しちごさん)を拡張しよう」と言い出した。正直(自分の作業に集中せーや)と一瞬思ったものの、普段けだるそうにしているYが珍しく勉強(っぽい)ことに興味を示したように見えたので、あえてちょっと話にノッてみた。

つまるところ、七五三(7歳、5歳、3歳)だけでお祝いをするのではなく、7と5と3をベースとする合成数の年齢にもお祝いをしようという趣旨らしい。

ちょっと考えてみると、数列の問題として意味がありそうななさそうな、面白い問題なので、そのあとぼんやりと考えてみた結果を記録しておく。もしも何か数学的に面白い特性や意味があるならば教えてもらいたい。

問題を整理する

問題

問題
7,5,3をベースとした合成数の年齢について考える。

このままでは考えにくいので、制約条件をいくつか付け加えることにする。

制約条件

1.合成の方法

合成の方法は、以下の3パターンについて考えることとする。 7,5,3に対応する係数をそれぞれc,b,aとして、これらを正整数とする。合成した年齢Aを次のように計算する。

合成方法①(線形結合)
A = c*7 + b*5 + a*3
合成方法②
A = 7^c + 5^b + 3^a
合成方法③(素因数分解)
A = c*7 * b*5 * a*3
2.年齢の最大値

計算結果は年齢という仮定なので、2019年2月現在の世界最高齢記録が116歳であるから、余裕をもって年齢の最大は120と仮定する。

わかること

3.係数の最大値

「1.合成の方法」「2.年齢の最大値」の条件から、各係数の最大値を求める。 つまり、例えば係数aの最大値を求めるためには、残りの係数b,cの値を0として、Aが120を超えない最大の整数を求めると

合成方法①(線形結合)
max(a) = 40
max(b) = 24
max(c) = 18
合成方法②及び合成方法③(素因数分解)
max(a) = 5
max(b) = 3
max(c) = 2

であることがわかる。

4.係数の組み合わせ

「3.係数の最大値」から、係数には0が入ることも考慮して、組み合わせ数は少なくとも

合成方法①(線形結合)
(40+1) * (24+1) * (18+1) = 19475
合成方法②及び合成方法③(素因数分解)
(5+1) * (3+1) * (2+1)=72

を超えないことがわかる。

列挙(合成方法②・③)

合成方法①(線形結合)は係数の組み合わせ数が膨大なので、列挙するためにはきちんとプログラムを書かねばならないが、合成方法②及び合成方法③(素因数分解)であれば表計算ソフトを使って比較的容易に求めることができる。

全係数の組み合わせのうち、120を超えない年齢のリストは以下の通り。

合成方法② 合成方法③
3 1
5 3
7 5
9 7
11 9
13 15
15 21
17 25
21 27
27 35
29 45
33 49
35 63
39 75
41 81
51 105
53
55
57
59
63
75
77
81
83
87
89
93
101
107
113

分布をグラフにすると次のようになる。 bunpu.png

列挙(合成方法①)

合成方法①(線形結合)の合成数を列挙するプログラムを作ってみた。

ソース
#include <stdio.h>
int main(void){
    #define LISTMAX 120
    #define AMAX 40
    #define BMAX 24
    #define CMAX 18
    
    int a,b,c,i;
    long age;
    char agelist[LISTMAX+1]={0};
    
    for(a=0;a<=AMAX;a++){
        for(b=0;b<=BMAX;b++){
            for(c=0;c<=CMAX;c++){
                age = c*7 + b*5 + a*3;
                if(age<=120){
                    agelist[age]=1;
                }
            }
        }
    }
    
    for(i=0;i<=LISTMAX;i++){
        if(agelist[i]==1){
            printf("%d\n",i);
        }
    }
    
}
実行結果
0
3
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120

なんと、ほぼ毎年お祝いだ!


現在ご覧のページの最終更新日時は2020/03/28 21:26:20です。

Copyright (C) N.Y.City ALL Rights Reserved.

Email: info[at]nycity.main.jp