0203 无平方因子数二
* * * *
拉格朗日计划
* * * *
无平方因子数二

不能被除了1以外的任何完全平方数整除的数称为无平方因子数。

众所周知,二项式系数(即组合数)(nk)可以如下排成三角形,称为帕斯卡三角形: 111121133114641151010511615201561172135352171 可以看出帕斯卡三角形的前八行中共有十二个互不相同的数:1, 2, 3, 4, 5, 6, 7, 10, 15, 20, 21, 35。

其中除4和20外都是无平方因子数,这些无平方因子数之和为105。

求帕斯卡三角形前51行所有不同的无平方因子数之和。

本题难度:



解答

小于50的素数共有15个:2,3,5,7,11,13,17,19,23,29,31,37,41,43,47。

前51行中的无平方因子数只可能是这些素数的组合,共有215=32768个,计算出所有这些数,放入一个集合。

前51行中最大的数是(5025),用标准库完全可以计算,因此遍历所有这些组合数,逐一检查是否在上述集合中,去重后汇总即得34029210557338

注:以下代码为Python3,因math.prod和math.comb均为Python3的新增函数。

import math,itertools

p=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47]

sf=set([math.prod(c) for k in range(1,15) for c in itertools.combinations(p,k)])

print(1+sum(set([math.comb(n,k) for n in range(2,51) for k in range(1,n//2+1) if math.comb(n,k) in sf])))