level 6
求这个数
比较丑的写法:
(DeleteDuplicates@(If[
Head@((# + 100)^((1/2))) === Integer &&
Head@((# + 268)^((1/2))) === Integer, #, 0] & /@
Array[# &, 1000000]))[[2 ;;]]
有没有更好的写法?
2021年05月18日 04点05分
1
level 6
优化了一下
If[Head@((# + 100)^((1/2))) === Integer &&
Head@((# + 268)^((1/2))) === Integer, #, 0] & /@
Array[# &, 1000] //. {m___, 0, n___} -> {m, n}
2021年05月18日 05点05分
3
level 7
Union[n^2-100/.FindInstance[m^2-n^2==168,{m,n},Integers,100]]
2021年05月18日 05点05分
4
这么巧,马上试试
2021年05月18日 05点05分
Reduce[m^2-n^2==168&&m>n>0,{m,n},Integers]
2021年05月18日 05点05分
妙啊
2021年05月18日 05点05分
level 6
中间的2个结构是相似的
Head@((# + 100)^((1/2))) === Integer &&
Head@((# + 268)^((1/2))) === Integer, #, 0
有没有什么办法把他们写在一起,但是映射的#已经在if用过一次了
2021年05月18日 05点05分
5
吧务
level 10
利用PackedArray和Listable加速
Pick[
#, Transpose@{Mod[(#
+100.)^(.5), 1.], Mod[(#+268.)^(.5), 1.]}, {0., 0.}]&@Range@1000000
2021年05月18日 09点05分
6
pick太强了
![[乖]](/static/emoticons/u4e56.png)
,感觉底层函数是if或者else?
2021年05月26日 13点05分
level 3
Cases[Range[10^3]^2 - 100, x_ /; IntegerQ[Sqrt[x + 268]] && x > 0]
2021年05月21日 11点05分
7
Case用得好
2021年05月26日 13点05分
吧务
level 12
Intersection[
# - 100, #
- 268] &[Range[10, 1000]^2]
2021年05月29日 00点05分
8
level 6
注意到(n + 1)^2 - n^2 是没有上界的:
# Boole[IntegerQ@((#
+ 100)^((1/2))) &&
IntegerQ@((# + 268)^((1/2)))] & /@
Range@(Floor@((Reduce[(n + 1)^2 - n^2 <= 268 - 100, {n}][[2]])^2) +
1) //. {m___, 0, n___} -> {m, n}
2022年05月31日 11点05分
9