トップ 差分 一覧 ping ソース 検索 ヘルプ PDF RSS ログイン

エラトステネスのふるい



目次



記事一覧

キーワード

エラトステネスのふるい

[VC++.NET][ロジック]

using namespace System;

static void screenNumber(array<bool>^ args) {

    args[0] = true;
    args[1] = true;

    for (int i=2; i < args->Length; i++) {
        for (int j=2; j < args->Length; j++) {
            int num = i * j;
            if (num >= args->Length) {
                break;
            }
            args[num] = true;
        }
    }
}

static void print(array<bool>^ ary) {
    int itemCnt = 0;
    for (int i=0; i < ary->Length; i++) {
        if (!ary[i]) {
            Console::Write("{0,6:d} {1}", i, ((++itemCnt % 6 == 0)?"\n":""));
        }
    }
}

int main(array<System::String ^> ^args)
{
    
    int size = 0l;
    array<bool>^ ary = nullptr;
    try {
        size = Int32::Parse(args[0]);
        ary = gcnew array<bool>(size);
    } catch (Exception^ e) {
        Console::WriteLine("引数が不正です\n{0}", e);
        return -1;
    }
    
    screenNumber(ary);
    print(ary);
    
    return 0;
}



YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto

Copyright© 矢木 浩人 All Rights Reserved.