[C#]剰余演算子(%)での余りの求め方とは?配列やList要素に対する余り・マイナス値に対する余り
![[C#]剰余演算子(%)での余りの求め方とは?配列やList要素に対する余り・マイナス値に対する余り](/dotnet/column/wp-content/uploads/2019/10/IP9.jpg)
- システム
エンジニア - C#で余りを出すには剰余演算子(%)をどのように使えばいいのですか。
- プロジェクト
マネージャー - それでは、今回はC#で剰余演算子(%)の基本的な使い方や配列やList要素に対する使い方、商と余りを同時に求める方法、マイナス値に対する剰余についてご紹介いたしましょう。
[C#]剰余演算子(%)での余りの求め方とは?
今回は、C#での剰余演算子(%)の使い方について説明します。剰余演算子の基本的な使い方、配列やList要素に対する使い方、商と余りを同時に求める方法、マイナス値に対する余りの算出方法について紹介します。
また、分から時分を求める方法やFizzBuzz問題を解く方法についても紹介します。
C#での剰余演算子(%)の使い方に興味のある方はぜひご覧ください。
基本的な使い方
C#での余りを算出する基本的な使い方を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
using System;
public class Hello{
public static void Main(){
// 10を4で割った余り
Console.WriteLine(10 % 4); // 2
// 3を2で割った余り
Console.WriteLine(3 % 2); // 1
// 6を3で割った余り
Console.WriteLine(6 % 3); // 0
// 1~10が偶数か奇数か
for(int i = 1; i <= 10; i++){
if(i % 2 == 1){
Console.WriteLine("{0}は奇数です。", i);
}else{
Console.WriteLine("{0}は偶数です。", i);
}
}
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
2
1
0
1は奇数です。
2は偶数です。
3は奇数です。
4は偶数です。
5は奇数です。
6は偶数です。
7は奇数です。
8は偶数です。
9は奇数です。
10は偶数です。
|
配列やList要素に対する余り
C#での、配列やListの全要素に対する余りを算出する方法を紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
using System;
using System.Collections.Generic;
using System.Linq;
public class Hello{
public static void Main(){
// 初期化
var mylist = new List<int>(){ 2, 6, 3, 8, 4, 1 };
int[] myarray = { 1, 4, 5, 4, 7, 8 };
// Select
var result1 = mylist.Select(x => x % 3); // List要素を3で割った余り
var result2 = myarray.Select(x => x % 3); // 配列要素を3で割った余り
// 結果表示
Console.WriteLine("{0}", string.Join(",", result1)); // 2,0,0,2,1,1
Console.WriteLine("{0}", string.Join(",", result2)); // 1,1,2,1,1,2
}
}
|
実行結果は以下のようになります。
1
2
|
2,0,0,2,1,1
1,1,2,1,1,2
|
LINQを使用して、すべての要素に対して余りを求められます。
商と余りを同時に求める
C#での、商と余りを同時に求める方法を紹介します。Math.DivRem関数を使用します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
using System;
public class Hello{
public static void Main(){
int rem;
int div = Math.DivRem(10, 4, out rem);
Console.WriteLine("10/4 = {0}余り{1}", div, rem); // 10/4 = 2余り2
div = Math.DivRem(3, 2, out rem);
Console.WriteLine("3/2 = {0}余り{1}", div, rem); // 3/2 = 1余り1
div = Math.DivRem(6, 3, out rem);
Console.WriteLine("6/3 = {0}余り{1}", div, rem); // 6/3 = 2余り0
}
}
|
実行結果は以下のようになります。
1
2
3
|
10/4 = 2余り2
3/2 = 1余り1
6/3 = 2余り0
|
商と余りが同時に求められていることが分かります。
マイナス値に対する余り
C#での、負数の余りを求める場合は注意が必要です。割られる数を負にすると、余りもマイナスになります。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
using System;
public class Hello{
public static void Main(){
int rem;
int div = Math.DivRem(-10, 4, out rem);
Console.WriteLine("-10/4 = {0}余り{1}", div, rem); // -10/4 = -2余り-2
div = Math.DivRem(3, -2, out rem);
Console.WriteLine("3/-2 = {0}余り{1}", div, rem); // 3/-2 = -1余り1
div = Math.DivRem(-6, -5, out rem);
Console.WriteLine("-6/-5 = {0}余り{1}", div, rem); // -6/-5 = 1余り-1
}
}
|
実行結果は以下のようになります。
1
2
3
|
-10/4 = -2余り-2
3/-2 = -1余り1
-6/-5 = 1余り-1
|
マイナス値に対する余りの結果は、言語によって挙動が異なりますので注意してください。
時間を求める
C#での、剰余演算子を利用した時間を求める方法を紹介します。ここでは、分から時分を求めます。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
using System;
public class Hello{
public static void Main(){
int rem;
int div = Math.DivRem(340, 60, out rem);
Console.WriteLine("340分 = {0}時間{1}分", div, rem); // 340分 = 5時間40分
div = Math.DivRem(100, 60, out rem);
Console.WriteLine("100分 = {0}時間{1}分", div, rem); // 100分 = 1時間40分
div = Math.DivRem(235, 60, out rem);
Console.WriteLine("235分 = {0}時間{1}分", div, rem); // 235分 = 3時間55分
}
}
|
実行結果は以下のようになります。
1
2
3
|
340分 = 5時間40分
100分 = 1時間40分
235分 = 3時間55分
|
FizzBuzz問題
C#での、剰余演算子を利用したFizzBuzz問題を解く方法を紹介します。FizzBuzz問題とは、3の倍数:fizz、5の倍数:buzz、15の倍数:fizzbuzzを出力します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
using System;
public class Hello{
public static void Main(){
// 3の倍数:fizz、5の倍数:buzz、15の倍数:fizzbuzzを出力
for(int i = 1; i <= 30; i++){
if(i % 15 == 0){
Console.WriteLine("{0}:FizzBuzz", i);
}else if(i % 5 == 0){
Console.WriteLine("{0}:Buzz", i);
}else if(i % 3 == 0){
Console.WriteLine("{0}:Fizz", i);
}
}
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
3:Fizz
5:Buzz
6:Fizz
9:Fizz
10:Buzz
12:Fizz
15:FizzBuzz
18:Fizz
20:Buzz
21:Fizz
24:Fizz
25:Buzz
27:Fizz
30:FizzBuzz
|
- システム
エンジニア - 剰余演算子(%)を使って余りを出す方法など、試してみます。
- プロジェクト
マネージャー - 分から時分を求める方法やFizzBuzz問題の解き方もぜひ参考にしてみてください。
まとめ
いかがでしたでしょうか。C#での剰余演算子(%)の使い方について説明しました。剰余演算子の基本的な使い方、配列やList要素に対する使い方、商と余りを同時に求める方法、マイナス値に対する余りの算出方法について紹介しました。
また、分から時分を求める方法やFizzBuzz問題を解く方法についても紹介しました。
ぜひご自身でC#のソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)