トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
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");
}
}
解説
試し割りで素数判定してます。