Số Armstrong (còn gọi số narcissistic) là số bằng tổng các chữ số mũ n (n = số chữ số). Ví dụ 3 chữ số: 153 = 1³ + 5³ + 3³.
Giải pháp
- Tạo Series.
- Duyệt từng giá trị, kiểm tra điều kiện Armstrong.
- Thu thập các số thỏa mãn vào list.
- Lọc Series gốc bằng
isin().
Mã ví dụ
import pandas as pd
data = pd.Series([153, 323, 371, 420, 500])
print("Series gốc:\n", data)
armstrong_list = []
for val in data:
armstrong = 0
temp = val
while temp > 0:
rem = temp % 10
armstrong += rem ** 3 # 3 chữ số -> mũ 3
temp //= 10
if armstrong == val:
armstrong_list.append(val)
print("\nCác số Armstrong:")
print(data[data.isin(armstrong_list)])
Kết quả
Series gốc: 0 153 1 323 2 371 3 420 4 500 dtype: int64 Các số Armstrong: 0 153 2 371 dtype: int64
Mở rộng cho n chữ số:
def is_armstrong(n):
s = str(n)
k = len(s)
return n == sum(int(d)**k for d in s)
armstrong_list = [v for v in data if is_armstrong(v)]