Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで配列内の数値の積が偶数か奇数かを判定する方法

問題概要

整数の配列 nums が与えられたとき、その要素すべてを掛け合わせた積が偶数か奇数かを判定する方法を解説します。

例えば、入力が nums = [5,7,4,2,6] の場合、積は 5 × 7 × 4 × 2 × 6 = 1680 となり、これは偶数なので出力は「Even」になります。

アプローチのポイント

ここで重要なのは、配列の中に1つでも偶数が含まれていれば、積は必ず偶数になるという数学的な性質です。したがって、実際にすべての要素を掛け合わせる必要はなく、偶数の存在だけを確認すればよいことになります。

具体的には、以下の手順で判定できます。

  • インデックス 0 から配列の末尾まで、各要素を順番に確認する
  • 偶数の要素が1つでも見つかったら、即座に「Even」を返す
  • ループが完了しても偶数が見つからなければ、すべての要素が奇数なので「Odd」を返す

実装例

def solve(nums):
    for i in range(len(nums)):
        if not nums[i] & 1:
            return "Even"

    return "Odd"

nums = [5,7,4,2,6]
print(solve(nums))

入力

[5,7,4,2,6]

出力

Even

コードの解説

nums[i] & 1 は、ビット演算(AND)を使った偶奇判定です。整数の最下位ビットが 0 なら偶数、1 なら奇数であることを利用しています。つまり not nums[i] & 1 は「nums[i] が偶数であれば True」という意味になります。

もちろん、より直感的な nums[i] % 2 == 0 を使っても同じ結果が得られます。

このアルゴリズムの計算量は O(n) ですが、偶数が見つかった時点で早期リターンするため、実際の処理はそれより短くなることが多い点もメリットです。逆に、すべての要素が奇数の場合のみ、配列全体を一度走査することになります。

  1. 【Python】約数の個数が偶数か奇数かを判定するプログラムの書き方

    この記事では、ある整数の約数の個数が偶数か奇数かを判定するPythonプログラムについて、その考え方と実装方法をわかりやすく解説します。 問題文 ある数「n」が与えられたとき、その約数の総数が偶数であるか奇数であるかを判定してください。 例えば、n = 10 の場合、約数は 1, 2, 5, 10 の4つなので「偶数」。一方、n = 100 の場合は 1, 2, 4, 5, 10, 20, 25, 50, 100 の9つとなり「奇数」となります。 アプローチ:約数を実際に数える 最も基本的な方法は、すべての約数を見つけ、その個数が偶数か奇数かをチェックすることです。 ここで重要なのは、約数

  2. Pythonで文字列が数字のみで構成されているかを判定する方法

    Pythonで文字列が数字のみかどうかを確認する方法 Pythonでは、文字列が数字(0〜9)だけで構成されているかどうかを簡単に判定できます。代表的な方法として、組み込みメソッド isdigit() を使う方法と、正規表現を使う方法の2つがあります。 方法1:isdigit() メソッドを使う Pythonには標準で isdigit() という文字列メソッドが用意されています。文字列内のすべての文字が数字(0〜9)であれば True を返し、それ以外の場合は False を返します。 >>> string = 9764135408 >>> string.