| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

エラトステネスのふるい

提供: MyMemoWiki
2020年2月16日 (日) 04:19時点におけるPiroto (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

エラトステネスのふるい

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;
}