给出三个正整数k,a, b,你需要计算有多少个正整数n满足a<=n<=b,且k*f(n)=n
具体要求:
(1)对于一个十进制的正整数, 定义f(n)为其各位数字的平方和,
如:
f(13) = 1的2次方 + 3的2次方 = 10
f(207) = 2的2次方+ 0的2次方+ 7的2次方= 53
(2)第一行包含3个正整数k,a,b; k>=1; a,b<=10的18次方; a<=b;
范例:
输入: 51 5000 10000
输出: 3
下面展示代码。
def f(n):
# 根据函数功能定义函数
n = str(n)
sum = 0
for i in n:
sum += int(i) ** 2
return sum
#键入数据
n=input("请输入三个正整数k,a,b(数字之间用空格隔开)\r\n(其中k>=1;a,b<=10的18次方;a<=b):")
#列表的转换
x=n.split(" ")
x = [int(x[i]) for i in range(len(x))]
#变量赋值
k,a,b = x
count = 0
for i in range(a,b+1):
if k * f(i) == i:
count +=1
print("满足条件的正整数n=",count)
运行结果