アルゴリスム – 奇数と偶数の判定をする

奇数と偶数の定義について

ゼロは偶数か?

奇数と偶数の定義にはゼロを含めるかどうかで2つの考え方があります。

<その1>

  • 偶数は自然数の中で2で割り切れる数。
  • 奇数は自然数の中で2で割り切れない数。

自然数とは、ゼロやマイナスの数ではなく1から始まる数(正の整数)の事です。

この定義だと、「ゼロは偶数でも奇数でもない」という事になります。

※自然数にゼロを含めるという考えもあるようです。

<その2>

  • 偶数は2で割り切れる整数。
  • 奇数は2で割り切れない整数。

この定義だと 「0÷2=0」となり割り切れるので「ゼロは偶数」という事になります。-2,-4も偶数です。

物理的に考えると「ゼロは何も無い(存在しない)」という事なので、物理的に存在しないものを割ることは出来ないので<その1>のほうが正解のように思えます。

しかし、数学的観点で考えると<その2>のほうが正解だそうです。

小学校の算数でもゼロは偶数と教えているそうです。

以上の事から、ゼロは偶数という定義をした場合の奇数と偶数を判定するアルゴリズムを紹介します。

奇数と偶数の判定方法

奇数か偶数か判定するには「%」演算子を使います。

「%」演算子は剰余(ジョウヨ)を計算します。剰余とは、割り算で割り切れなかった余りです。

2で割って余りが出たら奇数、割り切れたら偶数です。

サンプルコード

奇数と偶数を判定するアルゴリズムを以下のプログラミング言語で紹介します。

  • Tcl
  • Python

サンプルコードについて

各プログラミング言語の基本的な制御構造とデータ構造を使って記述しています。

必要であれば、for, foreach、リスト、配列などに書き換えたり、関数化を行って練習してください。

Tcl

[サンプル:odd-even.tcl]

#!/bin/sh
# the next line restarts using tclsh \
exec tclsh "$0" "$@"

# 奇数と偶数の判定

puts -nonewline stdout "数字を入力してください:"
flush stdout

set num [gets stdin]

if {$num % 2 == 0} {
    puts "入力した数字は偶数です。"
} else {
    puts "入力した数字は奇数です。"
}

[実行例]

$ ./odd-even.tcl
数字を入力してください:11
入力した数字は奇数です。
$ ./odd-even.tcl
数字を入力してください:12
入力した数字は偶数です。
$ ./odd-even.tcl
数字を入力してください:0
入力した数字は偶数です。

Python

[サンプル:odd-even.py]

#!/usr/bin/env python3

# 奇数と偶数の判定

num = input('数字を入力してください。: ')
num = int(num)    # 文字列から数値に変換

if num % 2 == 0:
    print('入力した数字は偶数です。')
else:
    print('入力した数字は奇数です。')

[実行例]

$ ./odd-even.py
数字を入力してください。: 11
入力した数字は奇数です。

$ ./odd-even.py
数字を入力してください。: 12
入力した数字は偶数です。

$ ./odd-even.py
数字を入力してください。: 0
入力した数字は偶数です。

コメント

タイトルとURLをコピーしました