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

数値の2進表現が回文かどうかを判定するPythonプログラム

ここでは、Pythonの組み込み関数を活用して、数値の2進表現が回文(パリンドローム)になっているかどうかを判定します。まず bin() 関数で数値を2進数形式の文字列に変換し、次にその文字列を反転させて元の文字列と比較します。両者が一致すれば回文、一致しなければ回文ではないと判断できます。

実行例

Input: 5
Output: palindrome

解説

数値 5 の2進表現は 101 です。

この文字列を反転しても 101 のままなので、元の文字列と一致します。

したがって、5 は回文であると判定されます。

アルゴリズム

Palindromenumber(n)
/* n は判定対象の数値 */
Step 1: 数値 n を入力する
Step 2: n を2進数形式に変換する
Step 3: 文字列の先頭2文字を取り除く
Step 4: 2進数文字列を反転し、元の文字列と比較する
Step 5: 一致すれば「Palindrome(回文)」と表示し、
        一致しなければ「Not a palindrome(回文ではない)」と表示する

サンプルコード

# 数値の2進表現が回文かどうかをチェックするプログラム
def palindromenumber(n):
    # 数値を2進数の文字列に変換
    bn_number = bin(n)
    # bin() 関数は接頭辞として '0b' を付加するため、
    # 先頭の2文字をスキップする
    bn_number = bn_number[2:]
    # 2進数文字列を反転し、元の文字列と比較する
    if bn_number == bn_number[::-1]:
        print(n, "IS A PALINDROME NUMBER")
    else:
        print(n, "IS NOT A PALINDROME NUMBER")

# ドライバープログラム
if __name__ == "__main__":
    n = int(input("Enter Number ::>"))
    palindromenumber(n)

実行結果

Enter Number ::>10
10 IS NOT A PALINDROME NUMBER
Enter Number ::>9
9 IS A PALINDROME NUMBER

補足:なぜ 10 は回文ではなく、9 は回文なのか?

10 の2進表現は 1010 です。これを反転すると 0101 となり、元の文字列と一致しないため回文ではありません。

一方、9 の2進表現は 1001 です。反転しても 1001 のままなので、回文であると判定されます。

このように、bin() 関数とスライス記法 [::-1] を組み合わせることで、わずか数行のコードで2進回文の判定を実装できます。

  1. Pythonで素数を判定するプログラムの書き方を徹底解説

    はじめに この記事では、「与えられた数値が素数かどうかを判定する」という問題に対する解決策を、Pythonのコード例とともにわかりやすく解説します。 問題の概要 問題設定:ある数値が与えられたとき、その数が素数であるかどうかを判定するプログラムを作成します。 まず「素数」の定義をおさらいしましょう。1より大きい正の整数のうち、1とその数自身以外に約数を持たない数を素数(そすう)と呼びます。たとえば、2、3、5、7などはそれ以外の約数を持たないため、素数です。 プログラムの考え方 今回作成するプログラムでは、入力された数値が素数かどうかを以下の手順で判定します。 1以下の数値は素数ではない

  2. Pythonでアームストロング数を判定するプログラムの書き方

    この記事では、与えられた整数が「アームストロング数(Armstrong number)」であるかどうかを判定するための考え方と、Pythonによる具体的な実装方法を解説します。 問題の定義 整数 n が与えられたとき、その整数がアームストロング数であるかどうかを判定することを目標とします。 アームストロング数とは? n 桁の正の整数 abcd… が次の条件を満たすとき、この数は「n 次(オーダー n)のアームストロング数」と呼ばれます。 abcd... = a^n + b^n + c^n + d^n + … つまり、各桁の数字を「桁数乗」した値の総和が、元の数と一致するかを確認す