C++で数値が偶数か奇数かを判定するプログラム(剰余演算・ビット演算の2つの方法)
偶数と奇数とは
ある整数が2で割り切れる場合、その数は「偶数」と呼ばれます。逆に2で割り切れない場合は「奇数」となります。
偶数の例は以下の通りです。
2, 4, 6, 8, 10, 12, 14, 16
奇数の例は以下の通りです。
1, 3, 5, 7, 9, 11, 13, 15, 17
方法1:剰余演算子(%)を使った判定
最も一般的な方法は、剰余演算子 % を使うやり方です。数値を2で割ったときの余りを調べることで、偶数か奇数かを判定できます。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int num = 25;
if(num % 2 == 0)
cout<<num<<" is even";
else
cout<<num<<" is odd";
return 0;
}実行結果
25 is odd
コードの解説
このプログラムでは、変数 num を2で割り、その余りを確認しています。num % 2 の結果が0であれば偶数、1であれば奇数と判定されます。
if(num % 2 == 0)
cout<<num<<" is even";
else
cout<<num<<" is odd";剰余演算子は直感的で分かりやすいため、初心者にもおすすめの方法です。
方法2:ビット演算AND(&)を使った判定
もう一つの効率的な方法として、ビット演算を利用する方法があります。2進数で表現したとき、最下位ビット(右端のビット)が1であれば奇数、0であれば偶数という性質があります。
この性質を利用し、数値と1の間でビットごとのAND演算(&)を行います。演算結果が0なら偶数、1なら奇数であることが分かります。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int num = 7;
if((num & 1) == 0)
cout<<num<<" is even";
else
cout<<num<<" is odd";
return 0;
}実行結果
7 is odd
コードの解説
このプログラムでは、num と1に対してビットごとのAND演算を実行しています。演算結果が0であれば num は偶数、それ以外の場合は奇数です。
if((num & 1) == 0)
cout<<num<<" is even";
else
cout<<num<<" is odd";まとめ
C++で偶数・奇数を判定するには、主に以下の2つの方法があります。
- 剰余演算子(%): 可読性が高く、ロジックが直感的に理解しやすい
- ビット演算AND(&): 処理速度が速く、低レベルの最適化に有効
どちらの方法でも正しく判定できますので、用途や可読性の要件に応じて使い分けると良いでしょう。
-
【C++】中心付き九角数とその数列を生成するプログラムの書き方
はじめに整数「n」が与えられたとき、n 番目の中心付き九角数(centered nonagonal number)を求めるとともに、n 項目までの中心付き九角数列を生成して結果を表示するのが本記事の課題です。中心付き九角数とは?中心付き九角数とは、中央に置かれた1個の点を中心として、その周囲に点で描かれる九角形の層が幾重にも積み重なって構成される数です。上図は中心付き九角数 𝑁₂ を表したものです。この値は次の式を使って計算できます。$$Nc(n)=\frac{(3n-2)(3n-1)}{2}$$例えば n = 2 の場合、(3×2−2)×(3×2−1)/2 = 4×5/2 = 10 となり
-
C++で数の奇数の約数(奇因子)の合計を求めるプログラム
正の整数が与えられたとき、その数の奇数の約数(奇因子)をすべて求め、それらの合計を計算するのが本プログラムの目的です。 例 入力: number = 20 出力: 奇数の約数の合計は: 6 入力: number = 18 出力: 奇数の約数の合計は: 13 例えば number = 20 の場合、約数は 1, 2, 4, 5, 10, 20 ですが、このうち奇数は 1 と 5 のみです。したがって、結果 = 1 + 5 = 6 となります。 プログラムで使用するアプローチ 奇数の約数の合計を計算する対象の数を入力する 偶数の約数を除外するため、まず数を2で割り切れる限り2で割り続け、奇数の部