C#で偶数・奇数を判定する方法|%演算子・if文・三項演算子を初心者向けに解説

はじめに

C#で数値を扱っていると、「この数は偶数か奇数かを判定したい」という場面がよくあります。たとえば、偶数行と奇数行で表示を変えたい場合や、ゲームでプレイヤーの順番を交互に切り替えたい場合、入力された数値が条件に合っているか確認したい場合などです。

C#で偶数・奇数を判定する基本はとてもシンプルです。数値を2で割ったときの余りを調べれば判定できます。C#では、余りを求めるために%演算子を使います。

この記事では、C#で偶数・奇数を判定する方法について、%演算子、if文、三項演算子、メソッド化、配列やLINQを使った判定まで、初心者向けにわかりやすく解説します。

1. C#で偶数・奇数を判定する基本

1-1. 偶数・奇数とは何か

偶数とは、2で割り切れる整数のことです。

たとえば、次のような数値は偶数です。

C#
0, 2, 4, 6, 8, 10, 12

一方、奇数とは、2で割り切れない整数のことです。

たとえば、次のような数値は奇数です。

C#
1, 3, 5, 7, 9, 11

偶数か奇数かを判断するときは、「2で割ったときに余りがあるかどうか」を確認します。

1-2. C#では「2で割った余り」で判定する

C#で偶数・奇数を判定するときは、数値を2で割った余りを確認します。

2で割った余りが0なら偶数です。

C#
number % 2 == 0

2で割った余りが0ではないなら奇数です。

C#
number % 2 != 0

たとえば、10を2で割ると余りは0なので偶数です。

C#
10 % 2 // 0

7を2で割ると余りは1なので奇数です。

C#
7 % 2 // 1

1-3. 偶数・奇数判定で使う%演算子の意味

C#の%演算子は、割り算の「余り」を求める演算子です。読み方としては「剰余演算子」と呼ばれます。

たとえば、次のコードでは103で割った余りを求めています。

C#
int result = 10 % 3;
Console.WriteLine(result);

実行結果は次のようになります。

C#
1

10 ÷ 3は商が3で、余りが1です。そのため、10 % 3の結果は1になります。

偶数・奇数判定では、この%演算子を使って「2で割った余り」を調べます。

2. %演算子を使って偶数・奇数を判定する方法

2-1. number % 2 == 0なら偶数

C#で偶数を判定する基本の条件式は次のとおりです。

C#
number % 2 == 0

この条件式は、「numberを2で割った余りが0なら」という意味です。2で割り切れる数は偶数なので、この条件が成り立つ場合は偶数と判断できます。

たとえば、number8の場合を考えてみます。

C#
8 % 2

8は2で割り切れるため、余りは0です。

そのため、次の条件式はtrueになります。

C#
8 % 2 == 0

2-2. number % 2 != 0なら奇数

C#で奇数を判定する基本の条件式は次のとおりです。

C#
number % 2 != 0

!=は「等しくない」という意味です。つまり、この条件式は「numberを2で割った余りが0ではないなら」という意味になります。

たとえば、number7の場合を考えてみます。

C#
7 % 2

7を2で割ると余りは1です。そのため、次の条件式はtrueになります。

C#
7 % 2 != 0

奇数は2で割り切れない整数なので、余りが0でないことを確認すれば奇数と判定できます。

2-3. 実際に動くサンプルコード

次のコードは、C#で数値が偶数か奇数かを判定する基本的なサンプルです。

C#
using System;

class Program
{
static void Main()
{
int number = 10;

if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}
}
}

このコードでは、number10を代入しています。10 % 2の結果は0なので、if文の条件が成り立ちます。

実行結果は次のようになります。

C#
偶数です

numberの値を7に変更すると、実行結果は次のようになります。

C#
奇数です

2-4. 0は偶数として判定される

C#で偶数・奇数を判定するとき、0は偶数として扱われます。

C#
int number = 0;

Console.WriteLine(number % 2 == 0);

実行結果は次のようになります。

C#
True

0 % 2の結果は0です。そのため、0は偶数として判定されます。

初心者のうちは「0は偶数なのか」と迷うことがありますが、プログラム上でも数学上でも、0は2で割り切れるため偶数です。

3. if文で偶数・奇数を判定する方法

3-1. if文を使った基本コード

C#で偶数・奇数を判定する場合、最もわかりやすい書き方はif文を使う方法です。

C#
int number = 5;

if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}

if文では、条件が正しい場合にifブロックの処理が実行されます。条件が正しくない場合は、elseブロックの処理が実行されます。

この例では、numberが偶数なら「偶数です」、そうでなければ「奇数です」と表示します。

3-2. Console.WriteLineで結果を表示する例

Console.WriteLineを使うと、判定結果をコンソール画面に表示できます。

C#
using System;

class Program
{
static void Main()
{
int number = 12;

if (number % 2 == 0)
{
Console.WriteLine(number + "は偶数です");
}
else
{
Console.WriteLine(number + "は奇数です");
}
}
}

実行結果は次のようになります。

C#
12は偶数です

文字列補間を使うと、より読みやすく書けます。

C#
Console.WriteLine($"{number}は偶数です");

文字列補間では、文字列の前に$を付け、{}の中に変数名を書きます。

3-3. 初心者が理解しやすい処理の流れ

偶数・奇数判定の処理の流れは、次のように考えると理解しやすいです。

まず、判定したい数値を用意します。

C#
int number = 9;

次に、その数値を2で割った余りを求めます。

C#
number % 2

余りが0なら偶数です。

C#
number % 2 == 0

余りが0でなければ奇数です。

C#
number % 2 != 0

つまり、C#で偶数・奇数を判定するときは、「2で割った余りが0かどうか」をif文で確認しているだけです。

3-4. 入力値を受け取って判定する方法

ユーザーが入力した数値を受け取って、偶数・奇数を判定することもできます。

C#
using System;

class Program
{
static void Main()
{
Console.Write("整数を入力してください: ");
string input = Console.ReadLine();

int number = int.Parse(input);

if (number % 2 == 0)
{
Console.WriteLine($"{number}は偶数です");
}
else
{
Console.WriteLine($"{number}は奇数です");
}
}
}

このコードでは、Console.ReadLine()でユーザーの入力を受け取ります。ただし、Console.ReadLine()の戻り値は文字列なので、int.Parseを使って整数に変換しています。

入力値が数値ではない場合に備えるなら、int.TryParseを使うと安全です。

C#
using System;

class Program
{
static void Main()
{
Console.Write("整数を入力してください: ");
string input = Console.ReadLine();

if (int.TryParse(input, out int number))
{
if (number % 2 == 0)
{
Console.WriteLine($"{number}は偶数です");
}
else
{
Console.WriteLine($"{number}は奇数です");
}
}
else
{
Console.WriteLine("整数を入力してください。");
}
}
}

int.TryParseを使うと、変換に成功した場合だけ偶数・奇数の判定を行えます。

4. 三項演算子で偶数・奇数を判定する方法

4-1. 三項演算子の基本構文

C#では、if文の代わりに三項演算子を使って条件分岐を書くこともできます。

三項演算子の基本構文は次のとおりです。

C#
条件式 ? 条件がtrueの場合の値 : 条件がfalseの場合の値

たとえば、次のコードでは、年齢によって表示する文字列を切り替えています。

C#
int age = 20;
string message = age >= 18 ? "成人です" : "未成年です";

Console.WriteLine(message);

三項演算子は、条件によって代入する値を変えたいときに便利です。

4-2. if文を三項演算子で短く書く例

偶数・奇数の判定も、三項演算子を使うと短く書けます。

C#
int number = 11;

string result = number % 2 == 0 ? "偶数です" : "奇数です";

Console.WriteLine(result);

実行結果は次のようになります。

C#
奇数です

このコードでは、number % 2 == 0trueなら"偶数です"falseなら"奇数です"resultに代入されます。

if文で書くと次のようになります。

C#
int number = 11;
string result;

if (number % 2 == 0)
{
result = "偶数です";
}
else
{
result = "奇数です";
}

Console.WriteLine(result);

処理内容は同じですが、三項演算子を使うとコードを短くできます。

4-3. 三項演算子を使うメリット

三項演算子を使うメリットは、簡単な条件分岐を短く書けることです。

たとえば、偶数か奇数かによって文字列を代入するだけなら、三項演算子はとても便利です。

C#
string result = number % 2 == 0 ? "偶数" : "奇数";

また、Console.WriteLineの中で直接使うこともできます。

C#
Console.WriteLine(number % 2 == 0 ? "偶数です" : "奇数です");

ただし、条件が複雑になる場合や、複数の処理を実行したい場合は、三項演算子よりもif文の方が読みやすくなります。

4-4. 初心者はif文と三項演算子のどちらを使うべきか

初心者の場合は、まずif文で偶数・奇数判定を書けるようになることをおすすめします。

if文は処理の流れが見えやすく、条件分岐の基本を理解しやすいからです。

C#
if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}

三項演算子は、if文に慣れてから使うとよいでしょう。

簡単な値の代入であれば三項演算子、処理が複数行になる場合はif文、というように使い分けると読みやすいコードになります。

5. 偶数・奇数判定をメソッド化する方法

5-1. 偶数かどうかをboolで返すメソッド

同じ偶数判定を何度も使う場合は、メソッド化すると便利です。

次のコードは、偶数かどうかをboolで返すメソッドです。

C#
static bool IsEven(int number)
{
return number % 2 == 0;
}

boolは、trueまたはfalseを表す型です。

このメソッドは、引数numberが偶数ならtrue、奇数ならfalseを返します。

C#
Console.WriteLine(IsEven(10)); // True
Console.WriteLine(IsEven(7)); // False

5-2. 奇数かどうかをboolで返すメソッド

奇数かどうかを判定するメソッドは、次のように書けます。

C#
static bool IsOdd(int number)
{
return number % 2 != 0;
}

このメソッドは、numberを2で割った余りが0ではない場合にtrueを返します。

C#
Console.WriteLine(IsOdd(10)); // False
Console.WriteLine(IsOdd(7)); // True

また、IsEvenメソッドを使って次のように書くこともできます。

C#
static bool IsOdd(int number)
{
return !IsEven(number);
}

!は否定を表す演算子です。IsEven(number)trueならfalsefalseならtrueになります。

5-3. メソッド化するメリット

偶数・奇数判定をメソッド化すると、コードが読みやすくなります。

たとえば、次の条件式だけを見ると、初心者には少し意味がわかりにくいかもしれません。

C#
number % 2 == 0

しかし、メソッド名を付けると意味がはっきりします。

C#
IsEven(number)

このように書くと、「numberが偶数かどうかを判定している」とすぐにわかります。

また、同じ処理を何度も書かなくてよくなるため、修正もしやすくなります。

5-4. 再利用しやすいコード例

次のコードは、偶数判定と奇数判定をメソッド化したサンプルです。

C#
using System;

class Program
{
static void Main()
{
int number = 15;

if (IsEven(number))
{
Console.WriteLine($"{number}は偶数です");
}
else
{
Console.WriteLine($"{number}は奇数です");
}

Console.WriteLine(IsOdd(number));
}

static bool IsEven(int number)
{
return number % 2 == 0;
}

static bool IsOdd(int number)
{
return number % 2 != 0;
}
}

メソッド化しておくと、他の処理でも同じ判定を簡単に使い回せます。

6. 複数の数値から偶数・奇数を判定する方法

6-1. 配列の中身を順番に判定する

複数の数値をまとめて偶数・奇数判定したい場合は、配列とループを使います。

たとえば、次のような配列があるとします。

C#
int[] numbers = { 1, 2, 3, 4, 5, 6 };

この配列の中身を1つずつ取り出して、偶数か奇数かを判定できます。

6-2. foreach文を使ったサンプルコード

配列の中身を順番に処理するには、foreach文を使うと簡単です。

C#
using System;

class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5, 6 };

foreach (int number in numbers)
{
if (number % 2 == 0)
{
Console.WriteLine($"{number}は偶数です");
}
else
{
Console.WriteLine($"{number}は奇数です");
}
}
}
}

実行結果は次のようになります。

C#
1は奇数です
2は偶数です
3は奇数です
4は偶数です
5は奇数です
6は偶数です

foreach文を使うと、配列の要素を先頭から順番に取り出して処理できます。

6-3. 偶数だけを抽出する方法

配列の中から偶数だけを取り出したい場合は、if文で偶数かどうかを判定します。

C#
using System;
using System.Collections.Generic;

class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5, 6 };
List<int> evenNumbers = new List<int>();

foreach (int number in numbers)
{
if (number % 2 == 0)
{
evenNumbers.Add(number);
}
}

foreach (int number in evenNumbers)
{
Console.WriteLine(number);
}
}
}

実行結果は次のようになります。

C#
2
4
6

List<int>を使うと、条件に合う数値だけを追加して管理できます。

6-4. 奇数だけを抽出する方法

奇数だけを取り出したい場合は、条件式をnumber % 2 != 0にします。

C#
using System;
using System.Collections.Generic;

class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5, 6 };
List<int> oddNumbers = new List<int>();

foreach (int number in numbers)
{
if (number % 2 != 0)
{
oddNumbers.Add(number);
}
}

foreach (int number in oddNumbers)
{
Console.WriteLine(number);
}
}
}

実行結果は次のようになります。

C#
1
3
5

このように、偶数か奇数かの条件を変えるだけで、抽出する数値を切り替えられます。

7. LINQを使って偶数・奇数を抽出する方法

7-1. Whereを使って偶数を取得する

C#では、LINQのWhereメソッドを使って、配列やリストから条件に合う要素だけを取得できます。

偶数だけを取得するコードは次のとおりです。

C#
using System;
using System.Linq;

class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5, 6 };

var evenNumbers = numbers.Where(number => number % 2 == 0);

foreach (int number in evenNumbers)
{
Console.WriteLine(number);
}
}
}

実行結果は次のようになります。

C#
2
4
6

Where(number => number % 2 == 0)は、「偶数の要素だけを取得する」という意味です。

7-2. Whereを使って奇数を取得する

奇数だけを取得する場合は、条件式をnumber % 2 != 0にします。

C#
using System;
using System.Linq;

class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5, 6 };

var oddNumbers = numbers.Where(number => number % 2 != 0);

foreach (int number in oddNumbers)
{
Console.WriteLine(number);
}
}
}

実行結果は次のようになります。

C#
1
3
5

LINQを使うと、条件に合う要素を短いコードで抽出できます。

7-3. LINQを使う場合の注意点

LINQを使うには、ファイルの先頭に次のusingが必要です。

C#
using System.Linq;

これを書き忘れると、Whereが使えずにエラーになることがあります。

また、LINQは便利ですが、初心者のうちはnumber => number % 2 == 0のようなラムダ式が少し難しく感じるかもしれません。

最初はforeach文とif文で処理の流れを理解し、慣れてきたらLINQを使うとよいでしょう。

7-4. 初心者向けの通常ループとの比較

通常のループで偶数だけを抽出すると、次のようになります。

C#
List<int> evenNumbers = new List<int>();

foreach (int number in numbers)
{
if (number % 2 == 0)
{
evenNumbers.Add(number);
}
}

LINQを使うと、同じ処理を次のように書けます。

C#
var evenNumbers = numbers.Where(number => number % 2 == 0);

通常のループは処理の流れがわかりやすく、LINQはコードを短く書けるのが特徴です。

初心者は、まず通常のループで理解してからLINQに進むと、コードの意味をつかみやすくなります。

8. 偶数・奇数判定でよくあるミス

8-1. =と==を間違える

C#初心者がよく間違えるのが、===の違いです。

=は代入を表します。

C#
number = 10;

一方、==は等しいかどうかを比較します。

C#
number == 10

偶数判定では、次のように==を使います。

C#
if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}

===は意味がまったく違うため、条件式では==を使うことを覚えておきましょう。

8-2. %演算子の意味を割り算と混同する

%演算子は割り算の結果ではなく、割り算の余りを求める演算子です。

たとえば、次の結果は2ではありません。

C#
5 % 2

5 ÷ 2の商は2ですが、余りは1です。そのため、5 % 2の結果は1になります。

偶数・奇数判定では、商ではなく余りを使います。

8-3. 奇数判定で条件式を間違える

奇数判定では、次のように書くのが基本です。

C#
number % 2 != 0

初心者のうちは、次のように書いてしまうことがあります。

C#
number % 2 == 1

正の整数だけを扱う場合は、この書き方でも奇数を判定できることがあります。しかし、負の数を扱う場合には注意が必要です。

C#では、負の奇数を2で割った余りは-1になることがあります。

C#
-3 % 2 // -1

そのため、奇数判定ではnumber % 2 == 1よりも、次のように書く方が安全です。

C#
number % 2 != 0

8-4. 負の数を判定するときの注意点

C#では、負の数でも偶数・奇数を判定できます。

C#
int number = -4;

if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}

-4は2で割り切れるため、偶数です。

C#
-4 % 2 // 0

一方、-3は2で割り切れないため、奇数です。

C#
-3 % 2 // -1

偶数判定は、負の数でも次の条件式で問題ありません。

C#
number % 2 == 0

奇数判定は、負の数も考えるなら次のように書くのがおすすめです。

C#
number % 2 != 0

9. 偶数・奇数判定の実用例

9-1. 偶数行と奇数行で処理を分ける

偶数・奇数判定は、行番号によって処理を分けるときに使えます。

たとえば、偶数行と奇数行で表示内容を変える場合は、次のように書けます。

C#
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
{
Console.WriteLine($"{i}行目: 偶数行の処理");
}
else
{
Console.WriteLine($"{i}行目: 奇数行の処理");
}
}

表や一覧を表示するときに、交互に色を変える処理などで使われる考え方です。

9-2. ゲームや抽選処理で使う

ゲームでは、偶数・奇数によって処理を分けることがあります。

たとえば、ターン制のゲームでプレイヤーを交互に切り替える場合です。

C#
for (int turn = 1; turn <= 5; turn++)
{
if (turn % 2 == 1)
{
Console.WriteLine($"ターン{turn}: プレイヤー1の番です");
}
else
{
Console.WriteLine($"ターン{turn}: プレイヤー2の番です");
}
}

ターン番号が奇数ならプレイヤー1、偶数ならプレイヤー2のように切り替えられます。

9-3. リストの要素を交互に処理する

リストの要素を交互に処理したい場合にも、偶数・奇数判定が役立ちます。

C#
string[] items = { "A", "B", "C", "D", "E" };

for (int i = 0; i < items.Length; i++)
{
if (i % 2 == 0)
{
Console.WriteLine($"{items[i]}: 偶数番目の処理");
}
else
{
Console.WriteLine($"{items[i]}: 奇数番目の処理");
}
}

配列のインデックスは0から始まるため、0, 2, 4が偶数番目、1, 3, 5が奇数番目として判定されます。

9-4. 入力チェックに使う

入力された数値が偶数でなければならない場合、偶数・奇数判定を入力チェックに使えます。

C#
Console.Write("偶数を入力してください: ");
string input = Console.ReadLine();

if (int.TryParse(input, out int number))
{
if (number % 2 == 0)
{
Console.WriteLine("正しい入力です");
}
else
{
Console.WriteLine("偶数を入力してください");
}
}
else
{
Console.WriteLine("整数を入力してください");
}

このように、入力された値が条件を満たしているかどうかを確認する場面でも、偶数・奇数判定はよく使われます。

10. C#の偶数・奇数判定に関するよくある質問

10-1. C#で偶数かどうかを判定するには?

C#で偶数かどうかを判定するには、%演算子を使って2で割った余りを確認します。

C#
number % 2 == 0

たとえば、次のように書きます。

C#
int number = 8;

if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}

2で割った余りが0なら偶数です。

10-2. C#で奇数かどうかを判定するには?

C#で奇数かどうかを判定するには、2で割った余りが0ではないことを確認します。

C#
number % 2 != 0

たとえば、次のように書きます。

C#
int number = 9;

if (number % 2 != 0)
{
Console.WriteLine("奇数です");
}

負の数も考慮する場合は、number % 2 == 1ではなく、number % 2 != 0を使うのがおすすめです。

10-3. 0は偶数ですか?

はい、0は偶数です。

C#でも、0 % 2の結果は0になります。

C#
Console.WriteLine(0 % 2 == 0);

実行結果は次のようになります。

C#
True

そのため、C#の偶数判定でも0は偶数として扱われます。

10-4. 負の数でも偶数・奇数を判定できますか?

はい、負の数でも偶数・奇数を判定できます。

C#
Console.WriteLine(-4 % 2 == 0); // True
Console.WriteLine(-3 % 2 != 0); // True

偶数判定はnumber % 2 == 0、奇数判定はnumber % 2 != 0を使えば、正の数でも負の数でも判定できます。

10-5. if文と三項演算子はどちらを使えばよいですか?

初心者は、まずif文を使うのがおすすめです。

if文は処理の流れがわかりやすく、条件分岐の基本を理解しやすいからです。

C#
if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}

一方、単純に文字列を代入するだけなら、三項演算子を使うと短く書けます。

C#
string result = number % 2 == 0 ? "偶数です" : "奇数です";

複数の処理がある場合はif文、短い条件分岐なら三項演算子、というように使い分けるとよいでしょう。

まとめ

C#で偶数・奇数を判定するには、%演算子を使って2で割った余りを確認します。

偶数かどうかを判定する基本の条件式は次のとおりです。

C#
number % 2 == 0

奇数かどうかを判定する基本の条件式は次のとおりです。

C#
number % 2 != 0

if文を使えば、初心者でも処理の流れを理解しやすく書けます。

C#
if (number % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です");
}

また、簡単な条件分岐であれば、三項演算子を使って短く書くこともできます。

C#
string result = number % 2 == 0 ? "偶数です" : "奇数です";

同じ判定を何度も使う場合は、IsEvenIsOddのようにメソッド化すると、コードが読みやすく再利用しやすくなります。

C#
static bool IsEven(int number)
{
return number % 2 == 0;
}

static bool IsOdd(int number)
{
return number % 2 != 0;
}

配列やリストの中から偶数・奇数を判定したい場合は、foreach文やLINQのWhereを使うと便利です。

C#の偶数・奇数判定は、%演算子の意味を理解すれば難しくありません。まずはnumber % 2 == 0で偶数、number % 2 != 0で奇数と覚えて、実際にコードを書きながら慣れていきましょう。