Pythonで数値の各桁の合計を求める方法(文字列を使わない実装)
ある数値 num が与えられたとき、その各桁の数字をすべて足し合わせた合計を求めます。ここでは、文字列に変換せず、数値演算だけで解く方法を紹介します。
たとえば、入力が num = 512 の場合、5 + 1 + 2 = 8 となるため、出力は 8 になります。
解き方の手順
- 合計を格納する変数 sum を 0 で初期化します。
- num が 0 になるまで、次の処理を繰り返します。
- sum に「num を 10 で割った余り」(最下位の桁)を加算します。
- num を「10 で割った商」(整数)で更新します。
- 繰り返しが終わったら sum を返します。
アルゴリズムのポイント
この手法では、「10 で割った余り」で一の位を取り出し、「10 で割った商」で桁を一つずらす操作を繰り返します。これにより、下の桁から順にすべての桁を取り出して合計することができます。文字列変換を行わないため、純粋な算術演算だけで処理が完結するのが特徴です。
実装例
class Solution:
def solve(self, num):
sum = 0
while(num != 0):
sum = sum + int(num % 10)
num = int(num / 10)
return sum
ob = Solution()
print(ob.solve(512))
入力
512
出力
8
-
Pythonで配列(リスト)の合計を求める方法をわかりやすく解説
この記事では、配列(リスト)の合計値を求めるという問題に対して、Pythonでの解決策とアプローチをわかりやすく解説します。 問題の定義 配列が入力として与えられたとき、その配列に含まれるすべての要素の合計を計算することを目標とします。 例えば、[1, 2, 3, 4, 5] という配列が与えられた場合、出力は 15 になります。 アプローチ1:ループを使った素朴な方法(総当たり法) 最も基本的な方法は、リストを先頭から順に走査し、各要素を合計用の変数に加算していくやり方です。手順は以下の通りです。 合計を格納する変数を 0 で初期化します。 for ループでリストの各要素を取り出し、順番に
-
Pythonで数の因子の最小合計を求めるプログラム|素因数分解の考え方
本記事では、与えられた整数について、積が元の数と等しくなる因子の組み合わせの中から合計が最小となる値を求める方法を、Pythonのコード例とともに解説します。 問題定義 入力として1つの整数が与えられます。この数を複数の因子の積として表したとき、因子の合計が最小になるケースを求めてください。 すべての因子の組み合わせを網羅的に調べて合計を比較する方法もありますが、実はもっとシンプルで効率的なアプローチが存在します。 考え方:素因数の合計が最小になる 鍵となるのは次の性質です。積が一定の値になるとき、因子の合計が最小になるのは、すべての因子を素数まで分解した場合(素因数分解した場合)です。