トップページに戻る    次の増井さんの書籍の問題へ    前の増井さんの書籍の問題へ

Q03 カードを裏返せ


C#のソース

using System;

class Program
{
    static void Main()
    {
        const int UB = 100;
        bool[] IsOmoteArr = new bool[UB + 1];

        for (int n = 2; n <= UB; n++) {
            for (int I = n; I <= UB; I += n) {
                IsOmoteArr[I] = !(IsOmoteArr[I]);
            }
        }

        for (int I = 1; I <= UB; I++) {
            if (IsOmoteArr[I] == false)
                Console.Write("{0},", I);
        }
        Console.WriteLine();
    }
}


実行結果

1,4,9,16,25,36,49,64,81,100,


解説

約数の個数が偶数の場合は、1以外の約数の数が奇数なので、カードは反転される。
約数の個数が奇数の場合は、1以外の約数の数が偶数なので、カードは反転されない。

約数の個数が奇数の数は、平方数なので、100以下の平方数が解となります。