忍者ブログ
20080511~ 13と7と11の倍数の論理積は13と7と11の積の倍数である。 和ァ・・・
[1954] [1953] [1952] [1951] [1950] [1949] [1948] [1947] [1946] [1944] [1945]
たとえば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の段を逆引きして
× 0 1 2 3 4 5 6
2の段 0 2 4 6 1 3 5

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だっけー?
え?限りなくシロに近いグレー?
ブログランキング・にほんブログ村へ
にほんブログ村

拍手[0回]

PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


忍者ブログ [PR]
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
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
ブログランキング
ブログランキング参戦中
にほんブログ村 アニメブログ 深夜アニメへ
にほんブログ村 漫画ブログ SF・ファンタジー漫画へ
にほんブログ村 科学ブログ 自然科学へ
よかったらポチッとお願いします^^
最新CM
[12/30 buy steroids credit card]
[09/26 Rositawok]
[03/24 hydraTep]
[03/18 Thomaniveigo]
[03/17 Robertaverm]
最新TB
プロフィール
HN:
量子きのこ
年齢:
43
性別:
男性
誕生日:
1981/04/04
職業:
WinDOS.N臣T
趣味:
妄想・計算・測定・アニメ
自己紹介:
日記タイトルの頭についてるアルファベットは日記の番号です
26進数を右から読みます
例:H→7番目、XP→15(P)×26+23(X)=413番目。
A=0とする仕様につき一番右の桁はAにできませんのでご了承くださいズコー
バーコード
ブログ内検索
アクセス解析