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

Pythonのハッピー数


ここでは、nが1つのハッピー数であるかどうかを検出する方法を説明します。したがって、ハッピー数は数値であり、正の整数で始まり、数値をその桁の2乗の合計に置き換えます。このプロセスは、1になるまで繰り返されます。それ以外の場合は、サイクルで無限にループします。これらの数字は、1が見つかったときに、ハッピー数になります。

数値が19であるとすると、数値はハッピー数であるため、出力はtrueになります。 19からわかるように、次のようになります

1 2 + 9 2 =82

8 2 + 2 2 =68

6 2 + 8 2 =100

1 2 + 0 2 + 0 2 =1

これを解決するには、次の手順に従います-

  • ここでは、動的計画法のアプローチを使用し、再帰を使用してこれを解決します
  • 基本的なケースは、n =1の場合、trueを返します
  • nがすでにアクセスされている場合は、falseを返します
  • 訪問済みとしてnをマーク
  • n:=nを文字列として、l:=nのすべての数字のリスト
  • temp:=すべての桁の合計の2乗
  • パラメータtempと訪問先リストを使用して関数を再帰的に返す

理解を深めるために、次の実装を見てみましょう-

class Solution(object):
   def isHappy(self, n):
      """
      :type n: int
      :rtype: bool
      """
      return self.solve(n,{})
   def solve(self,n,visited):
      if n == 1:
         return True
      if n in visited:
         return False
      visited[n]= 1
      n = str(n)
      l = list(n)
      l = list(map(int,l))
      temp = 0
      for i in l:
         temp += (i**2)
      return self.solve(temp,visited)
ob1 = Solution()
op = ob1.isHappy(19)
print("Is Happy:",op)

入力

19

出力

Is Happy: True

  1. Pythonの回文数

    整数があるとします。整数が回文であるかどうかを確認する必要があります。つまり、整数は順方向または逆方向の両方で同じであり、その数は回文です。たとえば、番号が454であるとすると、逆にすると再び454になります。これが回文です。ここで、数値が-565の場合、その逆は565-になります。これは同じではないため、これは回文ではありません。 これを解決するために、数値を文字列として変換してから、文字列を逆にします。文字列と逆文字列が同じ場合、番号は回文です。したがって、その場合はtrueを返し、それ以外の場合はfalseを返します。 理解を深めるために実装を見てみましょう 例 class Solu

  2. Pythonのfactorial()

    数値の階乗を見つけることは、Pythonを含むデータ分析やその他の数学的分析で頻繁に必要とされます。階乗は、1から指定された数までのすべての整数を乗算することにより、常に正の整数に対して検出されます。以下に示すように、これを見つけるには3つのアプローチがあります。 Forループの使用 forループを使用して、指定された数まで1番を繰り返し、各ステップで乗算を続けることができます。以下のプログラムでは、ループで使用する前に、数値を入力して入力を整数に変換するようにユーザーに求めています。このようにして、計算で正の整数を確実に取得します。 例 n = input("Enter a nu