N.Y.Cityのまちかど
extended7-5-3
拡張七五三(しちごさん)
はじめに
タイトルだけ見てもまったく何のことかわからないのではないかと思う。
或る日、私が担当する作品制作の授業を受けていた学生Yが(なんでそんな発想に至ったのか前後関係がまったくわからないのだが)「七五三(しちごさん)を拡張しよう」と言い出した。正直(自分の作業に集中せーや)と一瞬思ったものの、普段けだるそうにしているYが珍しく勉強(っぽい)ことに興味を示したように見えたので、あえてちょっと話にノッてみた。
つまるところ、七五三(7歳、5歳、3歳)だけでお祝いをするのではなく、7と5と3をベースとする合成数の年齢にもお祝いをしようという趣旨らしい。
ちょっと考えてみると、数列の問題として意味がありそうななさそうな、面白い問題なので、そのあとぼんやりと考えてみた結果を記録しておく。もしも何か数学的に面白い特性や意味があるならば教えてもらいたい。
問題を整理する
わかること
列挙(合成方法②・③)
合成方法①(線形結合)は係数の組み合わせ数が膨大なので、列挙するためにはきちんとプログラムを書かねばならないが、合成方法②及び合成方法③(素因数分解)であれば表計算ソフトを使って比較的容易に求めることができる。
全係数の組み合わせのうち、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 |
分布をグラフにすると次のようになる。
列挙(合成方法①)
合成方法①(線形結合)の合成数を列挙するプログラムを作ってみた。
ソース
#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