2009年07月31日 14:30 [Edit]

Math - 適当な九桁の数を二つ並べた数は

必ず7で割り切れます。

たとえば975,318,642を二つ並べた975,318,642,975,318,642を7で割ってみて下さい。ぴったり139,331,234,710,759,806になります。


種明かしをすると、「適当な九桁の数を二つ並べた数」は、必ず1,000,000,001の倍数のがその理由です。ところが、1,000,000,001を因数分解すると71111131191525791。ということは7でも必ず割り切れるわけです。

好きな3桁の数字を適当に考えてみましょう:ぁゃιぃ(*゚ー゚)NEWS 2nd
このようにしてできた数字は必ず7で割り切れるのだ

それでは、このような数が他にないか探してみることにしましょう。とりあえず10桁まで。

7で割り切れるのは、3桁と9桁の場合のみであることがわかります。ついでに、1,000,000,001は1,001の倍数であることもわかります。

余談ですが、素因数分解するためのJavaScriptのプロトタイプを署名の後に。32bitまでの整数しか対応していない、エラトステネスのふるいを使った素朴な奴ですが。

倍数って、本当に面白いですね。キーボードが壊れてしまうほど。

Dan the Number Cruncher

(function(){

var primes = [2];

var is_prime = function(n){
    for (var i = 0; i < primes.length; i++){
      var d = primes[i];
      if (d * d > n)  break;
      if (n % d == 0) return false;
    }
    primes.push(n);
    return true;
};

(function(n, max){
    for(;primes[primes.length-1] < max; n += 2) is_prime(n);
})(3, 0x10000);

Factored = function(n){
    if (n.constructor === Number){
        if (n <= 1) {
            this[n] = 1;
        }else{
            for (var i = 0, l = primes.length; i < l; i++){
                var p = primes[i];
                if (n % p) continue;
                this[p] = 0;
                while (n % p === 0){
                    this[p]++;
                    n /= p;
                }
                if (n === 1) break;
            }
            if (n !== 1) this[n] = 1;
        }
    }
    else if (typeof(n) === 'object'){
        for (var p in n) this[p] = n[p];
    }
};

Factored.prototype = {
    toString:function(){
        var ret = [];
        for (var p in this){
            if (! this.hasOwnProperty(p)) continue;
            ret.push(p + ':' + this[p]);
        }
        return '(new Factored({' + ret.join(',') + '})';
    },
    toDOM:function(){
        var d = document;
        var ret = d.createElement('span');
        ret.className = 'factored';
        for (var p in this){
            if (! this.hasOwnProperty(p)) continue;
            ret.appendChild(d.createTextNode(p));
            var sup = d.createElement('sup');
            sup.appendChild(d.createTextNode(this[p]));
            ret.appendChild(sup);
        }
        //ret.innerHTML = this.toHTML();
        return ret;
    },
    toHTML:function(){
        return this.toDOM().innerHTML;
    },
    valueOf:function(){
        var ret = 1;
        for (var p in this){
            if (! this.hasOwnProperty(p)) continue;
            ret *= Math.pow(parseInt(p), parseInt(this[p]));
        }
        return ret;
    }
}

})();

追記:

なんと本職の数学者からつっこみが。

Twitter / Iwao KIMURA: @dankogai n=3*(2*k+1), k=0 ...
@dankogai n=3*(2*k+1), k=0,1,2,... に対して,10^n+1 は7で割り切れます.ついでに,(10^n+1)/7と,1/7の小数展開を見比べると面白いです.

これは、10でなくても、b^3 + 1 が 7 で割り切れるbなら全部なりたつことは、以下の筆算を見ると推察できます。これは b^(6 + 3) + 1 を b^3 + 1 で割っている様子です。

                      1  0  0 -1  0  0  1
           ------------------------------
1  0  0  1 ) 1  0  0  0  0  0  0  0  0  1
             1  0  0  1
             -------------------
                     -1  0  0  0
                     -1  0  0 -1
                     --------------------
                               1  0  0  1
                               1  0  0  1
                               ----------
                                        0

それでは10の他に、b^3 + 1 が7で割り切れるbにはどんなものがあるでしょうか?読者の宿題とさせていただきます:)


この記事へのトラックバックURL

この記事へのトラックバック
一日のまとめ 2009年7月31日分【kskニュースβ】at 2009年07月31日 21:45
この記事へのコメント
>1,001は1,000,000,001の倍数であることもわかります。

絶対逆だな!
Posted by ひげ&ヅラ at 2009年07月31日 14:56
ひげ&ヅラさん、
あ、本当だ。きーぼーどがこわれたせいにしておきます。
Dan the Typo Generator
Posted by at 2009年07月31日 15:02
>必ず1,000,000,001の倍数のが
必ず1,000,000,001の倍数であるというのが

細かいようですが、続く"ところが"も要らないようです。。。
Posted by mikamix at 2009年07月31日 15:13
Twitterで書いたんですが,再掲;
@dankogai 桁数数え違ってませんか?1001は3桁?

@dankogai n=3*(2*k+1), k=0,1,2,... に対して,10^n+1 は7で割り切れます.ついでに,(10^n+1)/7と,1/7の小数展開を見比べると面白いです.
Posted by iwaokimura at 2009年07月31日 15:18
「適当な九桁の数を二つ並べた数」って 111111111222222222とかもでしょ?
Posted by とにー at 2009年07月31日 16:08
b^3+1が7で割り切れるのは、mod 7で考えればいいので、
bを7で割った余りが3,5,6のときですね。
Posted by kaminaga at 2009年07月31日 20:25
日本語ムズカシイ><
Posted by Yugo at 2009年07月31日 20:25

そういう風に問題を解釈し、しかも111111111222222222が7の倍数なら
       
       111111111222222220
111111111222222221

       111111111222222223
111111111222222224
111111111222222225
111111111222222226
111111111222222227
111111111222222228
111111111222222229

これが全部、7の倍数になるはず

てか、任意の18桁の数は7の倍数になるって言ってることになる 面白い
Posted by 熱い〜 at 2009年07月31日 20:26
> 熱い〜 さん

そうはならんでしょう?
「111111111222222222が7の倍数」はその通りと思うが、
「111111111222222220」は違うでしょ、2小さいんだから。
それ以降はもっと不明。
 ……どうもこの例は目がチカチカしていけない。
Posted by まつ at 2009年08月01日 11:13
キーボードクラッシャーのニコ動やばすぎる
まさか、dankogaiのブログで呼吸困難になるまで笑う日がくるとは…
今日が土曜でよかった
Posted by 通りすがり at 2009年08月01日 14:25
> まつさん

熱い〜さんのは
> 「適当な九桁の数を二つ並べた数」
へのつっこみだと思いますよ

たしかにこの表現は
「適当な九桁の数を『2回繰り返してできた』数」
としか解釈できないわけじゃない。

熱い〜さんの2つ目のコメントは
順を追おうとしてかえって主旨が伝わりにくいような気もしますが
「そういう風に問題を解釈し」たら

「適当な九桁の数を二つ並べた数は必ず7で割り切れます。」
=>
「適当な九桁の数を二つ並べた数」=「適当な18桁の数」は(略)

って主張してることになる。

っていってるんじゃないでしょうか

ちなみに
> 「111111111222222222が7の倍数」はその通りと思うが、
このエントリの趣旨にそって解釈するならそのとおりじゃないです
「111111111111111111(18桁)が7の倍数」が正しい
11111111122222222Xの場合、実際に7の倍数になるのはX=3のときですし

Posted by とおりすがり at 2009年08月01日 14:44
とおりすがり さん、ありがとうございます。
「「111111111111111111(18桁)が7の倍数」が正しい」
あ、その通りです。お恥ずかしい。
Posted by まつ at 2009年08月01日 17:51
>必ず1,000,000,001の倍数のがその理由です。

必ず1,000,000,001の倍数「になる」のがその理由です。

と入れたほうがいいと思います。
Posted by くま at 2009年08月01日 19:31