必ず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にはどんなものがあるでしょうか?読者の宿題とさせていただきます:)