読み込み中...

Swiftでの偶数・奇数判定!完全マスターのための7選

Swiftでの偶数・奇数判定方法のイラスト Swift
この記事は約13分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、Swiftでの偶数・奇数判定を完璧に理解し、実装することができるようになります。

初心者から中級者までの方が、実際のサンプルコードをもとに手を動かしながら学べる内容となっています。

疑問や不明点があれば、この記事を参照して、Swiftでの偶数・奇数判定のノウハウを手に入れてください。

●Swiftの基本

SwiftはAppleが開発したプログラミング言語で、iOSやmacOSのアプリを作成するためのものです。

その中でも、データの偶数・奇数判定は頻繁に行われる処理となっています。

○Swift言語とは

Swiftは、シンプルで直感的な文法を持ち、初心者にも理解しやすい言語です。

安全性を重視して設計されており、バグを防ぐための多くの機能が備わっています。

また、高速な実行性能も持ち合わせており、大規模なアプリ開発にも対応しています。

○偶数と奇数の基本的な判定方法

Swiftにおける偶数・奇数の判定は、数値を2で割った余りをチェックすることで行えます。

余りが0であれば偶数、1であれば奇数と判断することができます。

let number = 5

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

このコードでは、変数numberを2で割った余りを使って偶数・奇数を判定しています。

この例では、numberに5を代入しているので、出力結果は「奇数です」となります。

こちらの方法は、非常にシンプルで直感的な偶数・奇数判定の方法となっています。

数値を2で割ったときの余りを利用することで、手軽に判定を行うことができます。

●Swiftでの偶数・奇数判定の具体的な方法

Swiftには様々な方法で偶数・奇数を判定する方法が存在します。

ここでは、特によく使われる方法を中心に、7つのサンプルコードを紹介していきます。

○サンプルコード1:基本的な偶数判定

最も簡単な偶数判定の方法は、数値を2で割った余りをチェックする方法です。

下記のコードでは、変数numberの値が偶数かどうかを判定しています。

let number = 4

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

この例では、numberに4が代入されています。

4は2で割り切れるので、「偶数です」と表示されます。

○サンプルコード2:基本的な奇数判定

奇数判定も同様に、数値を2で割った余りで判定しますが、奇数の場合は余りが1となります。

let number = 7

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

このコードでは、変数numberに7を代入しています。7を2で割った余りは1なので、「奇数です」と表示されます。

○サンプルコード3:条件分岐を使った偶数・奇数判定

条件分岐は、ある条件に基づいてプログラムの動作を変えるための機能です。

Swiftではif文を用いて条件分岐を実現することができます。

下記のコードは、switch文を用いて偶数・奇数の判定を行う例です。

let number = 9

switch number % 2 {
case 0:
    print("偶数です")
default:
    print("奇数です")
}

この例ではnumberの値を2で割った余りをswitch文で判定しています。

余りが0の場合、偶数と判定され、「偶数です」と表示されます。それ以外の場合は、「奇数です」と表示されます。

この例の場合、9は2で割ると余りが1となるので、「奇数です」と表示される結果となります。

○サンプルコード4:関数を使っての偶数・奇数判定

関数は特定の処理をまとめて名前をつけることができる機能です。

関数を使用することで、同じ処理を繰り返し利用することが容易になります。

下記のコードでは、偶数・奇数を判定する関数を作成し、その関数を使用して判定を行っています。

func isEven(_ number: Int) -> Bool {
    return number % 2 == 0
}

let number = 14
if isEven(number) {
    print("偶数です")
} else {
    print("奇数です")
}

このコードでは関数isEvenを用いて偶数を判定しています。

関数内では、引数として受け取ったnumberを2で割った余りが0かどうかをBool値で返しています。

この例ではnumberに14が代入されていますので、「偶数です」と表示される結果となります。

○サンプルコード5:三項演算子を利用した判定

Swift言語においては、条件を簡潔に書くために三項演算子を使用することができます。

三項演算子は「条件 ? 真の場合の値 : 偽の場合の値」という形式で記述されます。

下記のコードは、三項演算子を用いて、ある数が偶数か奇数かを判定し、その結果を文字列として取得する例を表しています。

let number = 11
let result = number % 2 == 0 ? "偶数です" : "奇数です"
print(result)

このコードでは、numberの値が偶数か奇数かを三項演算子で判定しています。

具体的には、numberを2で割った余りが0かどうかをチェックしています。

余りが0の場合は「偶数です」という文字列を、そうでない場合は「奇数です」という文字列をresultに代入します。

この例では、numberに11が代入されているので、「奇数です」という文字列が出力されます。

○サンプルコード6:配列を使った偶数・奇数判定

配列を使用して複数の数字の偶数・奇数を一度に判定する方法もあります。

下記のコードでは、配列の各要素をループで回して偶数・奇数を判定し、その結果を新しい配列として取得する方法を表しています。

let numbers = [5, 8, 14, 21, 29]
let results = numbers.map { $0 % 2 == 0 ? "偶数" : "奇数" }
print(results)

このコードではnumbersという配列の中に複数の数字が格納されており、それをmap関数を使用して偶数か奇数かを判定しています。

そしてその結果をresultsという新しい配列として取得しています。

この例では、resultsには["奇数", "偶数", "偶数", "奇数", "奇数"]という配列が生成されます。

○サンプルコード7:ラムダ式を使った偶数・奇数判定

Swiftでは、ラムダ式やクロージャと呼ばれる無名関数を使用して処理を簡潔に書くことができます。

クロージャは、一時的な処理や短い関数を表現するのに役立ちます。

ここでは、クロージャを用いて偶数・奇数の判定を行うコードの例を紹介します。

let isEvenClosure: (Int) -> Bool = { $0 % 2 == 0 }
let number = 16
print(isEvenClosure(number) ? "偶数です" : "奇数です")

このコードでは、isEvenClosureという名前のクロージャを定義しています。

このクロージャは、引数として整数を受け取り、その数が偶数かどうかをBool値で返すものです。

この例では、16は2で割り切れるので「偶数です」と出力されます。

●偶数・奇数判定の応用例

偶数と奇数の判定は、単に数字が偶数か奇数かを知るためだけでなく、多くの実用的なプログラムの中で役立てられます。

ここでは、Swiftでの偶数・奇数判定を応用した様々な例を取り上げ、詳細に解説します。

○サンプルコード8:偶数・奇数判定を活用したフィルタリング

一般的なアプリケーションでは、配列やリストの中から特定の条件を満たす要素だけを取り出すフィルタリング操作がよく行われます。

下記のコードでは、偶数のみをフィルタリングして取得しています。

let numbers = [3, 6, 9, 12, 15, 18, 21]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers)

このコードでは、numbers配列から偶数だけを取り出す操作を行っています。

filter関数を使用し、その中で偶数を判定するクロージャを指定しています。

結果としてevenNumbers配列には[6, 12, 18]という偶数だけが格納されます。

○サンプルコード9:偶数・奇数のカウント

配列の中の偶数や奇数の数を知りたい場面もあります。

下記のコードは、配列内の偶数と奇数の数をカウントする方法を表しています。

let numbers = [2, 5, 8, 11, 14, 17, 20]
let evenCount = numbers.filter { $0 % 2 == 0 }.count
let oddCount = numbers.count - evenCount
print("偶数の数: \(evenCount)")
print("奇数の数: \(oddCount)")

上記のコードでは、まず偶数の数をevenCountとしてカウントし、次に全体の数から偶数の数を引いて奇数の数を求めています。

この例では、偶数は4つ、奇数は3つという結果が得られます。

○サンプルコード10:偶数・奇数を色分けするUIの実装

SwiftでアプリのUIを開発する場面で、偶数と奇数を色分けして表示するといった操作も考えられます。

ここでは、TableViewのセルを偶数と奇数で色分けする簡単な例を紹介します。

import UIKit

class ViewController: UITableViewController {

    let numbers = [10, 23, 36, 49, 52, 65, 78]

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return numbers.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "numberCell", for: indexPath)
        let number = numbers[indexPath.row]
        cell.textLabel?.text = "\(number)"
        if number % 2 == 0 {
            cell.backgroundColor = UIColor.lightGray
        } else {
            cell.backgroundColor = UIColor.white
        }
        return cell
    }
}

このコードでは、TableViewのセルに数字を表示し、その数字が偶数であればセルの背景色を薄い灰色に、奇数であれば白に設定しています。

これにより、偶数と奇数を一目で区別できるようなUIを実現しています。

●注意点と対処法

Swiftでの偶数・奇数判定は基本的に簡単な操作ですが、いくつかの注意点とそれに対する対処法が存在します。

プログラミングの世界では、細かなミスや環境の違いによって思わぬエラーや不具合が生じることがあります。

そのような状況を避けるために、ここで解説するポイントを理解し、正確なコーディングを心掛けることが大切です。

○整数以外の判定時の問題点

Swiftの偶数・奇数の判定は、主に整数を対象としています。

しかし、浮動小数点数や文字列など、整数以外のデータ型に対して偶数・奇数の判定を試みると、エラーや意図しない結果が生じる可能性があります。

このコードでは浮動小数点数を使って偶数・奇数の判定を試みる例を表しています。

let floatValue: Float = 5.5
if Int(floatValue) % 2 == 0 {
    print("偶数です")
} else {
    print("奇数です")
}

上記のコードでは、floatValueInt型に変換してから偶数・奇数の判定を行っています。

浮動小数点数を整数に変換する際、小数部分は切り捨てられます。

そのため、この例では「奇数です」と表示されます。

○大きな数値における判定の誤差

特に大きな数値を扱う場合、計算上の誤差が生じることが考えられます。

Swiftの整数型は、通常、64ビットの範囲を持っていますが、この範囲を超える大きな数値を計算する際には、BigIntのような特定のライブラリを利用することが推奨されます。

下記のコードは、非常に大きな数値の偶数・奇数判定しています。

import BigInt

let bigNumber = BigInt("1234567890123456789012345678901234567890")
if bigNumber % 2 == 0 {
    print("偶数です")
} else {
    print("奇数です")
}

上記のコードでは、BigIntライブラリを使用して、通常のInt型では扱えない大きな数値の偶数・奇数の判定を行っています。

この例では「偶数です」と表示されます。

●カスタマイズ方法

Swiftでの偶数・奇数判定は、基本的な方法から多少のバリエーションまでさまざまな手法が存在します。

しかし、より高度な処理や特定のニーズに応じて、カスタマイズされた方法を実装する場面もあるでしょう。

ここでは、Swiftでの偶数・奇数判定のカスタマイズ方法を2つのアプローチを元に詳しく解説します。

○拡張関数を用いた偶数・奇数判定のカスタマイズ

Swiftでは、既存の型に新しいメソッドや計算型プロパティを追加することができる拡張機能があります。

この機能を利用することで、Int型に直接偶数・奇数を判定するメソッドを追加することが可能です。

このコードでは、Int型に偶数・奇数判定のメソッドを追加する例を紹介しています。

この例では、isEvenisOddという2つの計算型プロパティをInt型に追加しています。

extension Int {
    var isEven: Bool {
        return self % 2 == 0
    }

    var isOdd: Bool {
        return !isEven
    }
}

let number = 4
if number.isEven {
    print("偶数です")
} else {
    print("奇数です")
}

上記のコードを利用すると、「偶数です」と表示されます。

このように、拡張機能を活用することで、より直感的で読みやすいコードを実装することができます。

○フレームワークやライブラリを使った高度な判定方法

Swiftのエコシステムには、多くのフレームワークやライブラリが存在します。

これらを利用することで、より高度な偶数・奇数判定や、特定の条件下での判定など、様々なカスタマイズが可能となります。

例えば、特定の数学的なアルゴリズムを利用して偶数・奇数を判定する場合や、ビッグデータを扱う場合など、標準の機能だけでは対応が難しい場面が考えられます。

そのような場合には、専門的なライブラリを活用することで、効率的に処理を実装することが可能となります。

まとめ

Swiftにおける偶数・奇数判定は、プログラミングの基本的なスキルの一部として非常に重要です。

本記事では、基本的な判定方法から応用例、注意点、そしてカスタマイズ方法まで、幅広く解説しました。

Swiftの拡張機能を用いることで、既存の型に新しいメソッドやプロパティを追加することができ、これによりコードの可読性や再利用性を高めることができます。

また、フレームワークやライブラリを活用することで、特定のニーズに応じた高度な判定も実現できます。

これにより、より効率的かつ柔軟に偶数・奇数判定の処理を実装することが可能となります。

初心者から中級者まで、Swiftを学ぶ全ての方にとって、偶数・奇数判定は欠かせないテーマです。

この記事を通して、Swiftでの偶数・奇数判定に関する知識やスキルを深め、より質の高いプログラムを作成するための一助となれば幸いです。

継続的な学びと実践を通じて、Swiftの世界をさらに探求し、プログラミングの楽しさを存分に味わってください。