一个朴素的想法是:1.先得到n以内的素数 2.两重循环枚举A+B , 判断是否是某个素数的平方。
对于第一步,n=5e5 , 需要使用素数筛来加速这个过程。直接暴力判素数O(nn)会超时。可以使用埃式筛得到。
对于第二步,我们从第一步得到素数为4e4数量级。所以无法直接O(p2)的作循环。但我们观察到这样的对其实很少!
因为A+B=C2 , 那么也就要求C不能太大,C=A+B≤2∗4e4=282 。 那么[1,282] 内的素数就非常稀少了。
数学家定义了一类特殊的素数,称为“平衡素数”。给定一个正整数 N,令 M 为所有不超过 N 的素数中的最大值。若一个不超过 N 的素数 p 同时满足以下两个条件,则称 p 是一个平衡素数:
请注意,只要存在至少一个符合条件的 q,p 即为平衡素数,无需考虑 q 的数量或顺序。
请你计算所有不超过 N 的平衡素数的总数。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册