定义f(n)为其各位数字的平方和,给出三个正整数k,a, b,你需要计算有多少个正整数n满足a小于等于n小于等于b, 且k*f(n)=n

def f(n):
    """求各位数字的平方和
    列如:f(13) = 1**2 + 3**2 = 10"""
    # 将整数转换为列表
    int_list = list(map(int, str(n)))
    sum = 0
    # 求列表中各项的平方和
    for i in range(0, len(int_list)):
        sum += int_list[i]**2
    return sum


def shijinzhi(*_list):
    # 输入的三个整数k,a,b
    k = _list[0]
    a = _list[1]
    b = _list[2]
    # 满足条件的次数i
    i = 0
    # 判断在a和b中的整数是否满足n == k * f(n),满足次数+1,不满足就继续循环
    for n in range(a, b + 1):
        if n == k * f(n):
            i += 1
        else:
            continue
    return i


print("满足条件的次数为:" + shijinzhi(51, 5000, 10000))
发布了17 篇原创文章 · 获赞 5 · 访问量 336

猜你喜欢

转载自blog.csdn.net/weixin_45116412/article/details/104920145
今日推荐