生成100以内的素数表放在d中。
用f计算各位数字和(特别地,数字1既不是素数也不是合数、其和定义为0)。
用g递归计算素因子的数字和。
最后根据定义判断并打印输出。
最终代码有七行。
代码长度:237字节 vs. 全站第一:104字节。
f=lambda n:sum(map(int,str(n)))*(n>1)
d=[j for j in range(2,99)if all(j%i for i in range(2,j))]
def g(n):
for p in d:
if n%p<1:return f(p)+g(n//p)
return f(n)
for k in range(10001):any((k%p<1)*(p<k)for p in d)and f(k)==g(k)==print(k)
|