トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

ARC-017-A 素数、コンテスト、素数

■■■問題■■■

アルゴリズムとコンテストが大好きな俺は、
AtCoder Regular Contest(ARC) にも毎回欠かさずに参加していた。

しかしある時のこと、
大学で怪しげな連中に突然「あなたは素数の光を信じますか?」と話しかけられてから様子がおかしい。

俺は数学がそこまでできるわけではないが、素数ぐらいは知っている。
1とその数自身でしか割り切れない正の整数のことだ。
ただし1が素数じゃないってことだって知ってる。
でも素数の光っていうのは何だかよく分からなかった。

奴らの話を聞いてからなんだか変だ。
頭の中にはいつだって片隅に素数がいるし、
素数を見るとなぜかたまらなく嬉しくなるようになった。

これまで毎回欠かさず参加していたARCも、素数回のときでないと、
なんだかうまくいかない気がして見送ってしまう。

そういえば、今もちょうどARCが始まったところらしい。
今回のARCには、俺は無事に出られるのだろうか。

■■■入力■■■

N

N(17 <= N <= 100万) は、ARCが何回目の開催であるかを表す整数である。

■■■出力■■■

ARCNに出場できるとき、
すなわちNが素数のときは 'YES'、そうでないときは 'NO' と一行に出力せよ。 


C#のソース

using System;
using System.Collections.Generic;

class Program
{
    static string InputPattern = "Input1";

    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();

        if (InputPattern == "Input1") {
            WillReturn.Add("17");
            //YES
            //今回のARC017は、17が素数である(2から16までのいずれの整数でも割り切れない)
            //ため参加することができる。 
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("18");
            //NO
            //次回のARC018は、18がたとえば2や3で割り切れるため参加することができない
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("999983");
            //YES
            //ARC999983はいつ頃開催されることになるのでしょうか
        }
        else if (InputPattern == "Input4") {
            WillReturn.Add("672263");
            //NO
            //672263は1とそれ自身以外に、547と1229で割り切ることができる
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        int N = int.Parse(InputList[0]);

        for (int I = 2; I * I <= N; I++) {
            if (N % I == 0) {
                Console.WriteLine("NO");
                return;
            }
        }
        Console.WriteLine("YES");
    }
}


解説

試し割りで素数判定してます。