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#の%演算子は、割り算の「余り」を求める演算子です。読み方としては「剰余演算子」と呼ばれます。
たとえば、次のコードでは10を3で割った余りを求めています。
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で割り切れる数は偶数なので、この条件が成り立つ場合は偶数と判断できます。
たとえば、numberが8の場合を考えてみます。
C#8 % 2
8は2で割り切れるため、余りは0です。
そのため、次の条件式はtrueになります。
C#8 % 2 == 0
2-2. number % 2 != 0なら奇数
C#で奇数を判定する基本の条件式は次のとおりです。
C#number % 2 != 0
!=は「等しくない」という意味です。つまり、この条件式は「numberを2で割った余りが0ではないなら」という意味になります。
たとえば、numberが7の場合を考えてみます。
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("奇数です");
}
}
}
このコードでは、numberに10を代入しています。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 == 0がtrueなら"偶数です"、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ならfalse、falseなら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 ? "偶数です" : "奇数です";
同じ判定を何度も使う場合は、IsEvenやIsOddのようにメソッド化すると、コードが読みやすく再利用しやすくなります。
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で奇数と覚えて、実際にコードを書きながら慣れていきましょう。

