20080511~
13と7と11の倍数の論理積は13と7と11の積の倍数である。
和ァ・・・
たとえば154は7の倍数であるが
右端桁の4を2倍した8から、それ以外の15を引いてマイナス7 マイナス7は7の倍数なので、154も7の倍数である。 しかしながらこの方式では 154から2を引いた152に対して「5あまっている」という判定は出ず、 あくまで「7の倍数ではない」という判定結果しか出ない。 これでは非常にMOTTAI GA NAI この「割り切れるか判定機(return:boolean)」を「あまり算出器(return:int)」に拡張するには 右端桁を2倍したものからそれ以外を引く ではなく、 右端桁から、それ以外を半分にしたものを引く にしなければならない。つまり全体を2で割るのだ。 154から2引いた152では 2から15を半分にした4を引いて-2=5となる。 2足りないのは5あまりと同じだ 7つの椅子を取り合う椅子取りゲームで人に対して5人あまっていたら、さらに2人足せば円卓は閉じて飲茶ができることと同じことだろう。 なぜ15を半分にして4なのか 15は7×2=14に1加えたものなので15=1である。 では1/2はどうやるのか 2倍して1になるものを探すわけだから、九九の2の段を逆引きして
4であることがわかるだろう。 もし、エクセルで(7で割った)あまり算出セルを作ろうと思ったならばアルゴリズムはこうだ。 目的の数がA1に入っているとすると(例:152) 右端桁以外を抽出するのにrounddown(A1/10,0)を行う。(152だったら15が取り出される) (ただし、A1が負の場合も扱う場合はif(A1<0,roundup,rounddown)と演算することに注意) これをB3セルに代入するとする。 それから右端桁を抽出するのに先ほどのB3セルを用いて A1-B3*10 (例:152-15*10=2) これをC3セルに入れよう。 そうすると、B3の右端桁と、C3のそれ以外桁から D3=B3-C3/2 (例:2-15/2=2-1/2=2-4=-2=5) で、本来ならばあまりが算出できるはずである。 が、答えであるD3が0~6に収まっているとは限らないので 収まるまで繰り返す。 といいたいところだが、C3が偶数であるとも限らない。 もし奇数だったら、上の九九表のようなことを行わなければならない。 ぶっちゃけていうと、あまりを出すMODという関数がエクセルには組み込まれている。 こいつは茶色文字で示したようなアルゴリズムで動く関数だ(と思う) -5とかいう負の数もちゃんと2と翻訳してくれるし (mod(-5,7)=2) πで割ったらいくらあまるかなんてのもちゃっかり演算してくれる。(mod(5π/4,π))=π/4 しかし、小数(ほぼ無理数)で割ったあまりを計算してくれるからといって 整数であるmに対してmod(m/n,k)をきちんと算出してくれるとは限らない。 たとえば先ほどのようなmod(1/2,7)は0.5と出てしまい、4にはならない。 もし4のような結果を算出したければ 2にy=0~6をかけたものをx=2yとし、mod(x,7)=1になるまで演算を繰り返すようなアルゴリズムが必要だろう。 たとえば循環参照を利用するなど。 なぜmod関数の機能を実数にまで拡張しておきながら分数(:整数比)には拡張していないのか おそらくだが、有限桁の実数をあくまで数値として扱うコンピュータとの相性が悪いのではないかと思う。 もしかしたら解析的に式を判断するツールだったら対応していてもいいのかもしれない。 エクセルではそこまで責任は負えませんよー的な感じで やるならユーザの自己責任でドウゾな感じなのかもしれない。 上述のようにマクロを使わずにできないこともないし、それよりは実数に対応させるほうがよほど有意義なのだろう(たぶん分数対応(逆元探し)と実数対応は排他的)、まあ推測だけども。 フォーゼって2進数で書くと0地に1だっけ?1地に0だっけー? え?限りなくシロに近いグレー? ![]() ![]() にほんブログ村 PR ![]() ![]() |
カレンダー
カテゴリー
最新CM
[12/30 buy steroids credit card]
[09/26 Rositawok]
[03/24 hydraTep]
[03/18 Thomaniveigo]
[03/17 Robertaverm]
最新記事
(01/01)
(03/19)
(03/18)
(03/18)
(02/23)
(02/14)
(02/12)
(01/03)
(09/23)
(09/23)
(02/11)
(05/30)
(05/28)
(05/28)
(05/27)
最新TB
プロフィール
HN:
量子きのこ
年齢:
44
HP:
性別:
男性
誕生日:
1981/04/04
職業:
WinDOS.N臣T
趣味:
妄想・計算・測定・アニメ
自己紹介:
日記タイトルの頭についてるアルファベットは日記の番号です
26進数を右から読みます 例:H→7番目、XP→15(P)×26+23(X)=413番目。 A=0とする仕様につき一番右の桁はAにできませんのでご了承くださいズコー
ブログ内検索
アーカイブ
最古記事
(05/11)
(05/11)
(05/13)
(05/13)
(05/13)
(05/13)
(05/13)
(05/13)
(05/14)
(05/14)
(05/14)
(05/14)
(05/16)
(05/16)
(05/16)
アクセス解析
|