求助:如何求出不能被3整除的整数
mathematica吧
全部回复
仅看楼主
level 1
hscote 楼主
老师好,我刚接触这个软件,这道题对于我来说很难,请老师帮帮我,谢谢!
我计算的目的是:
A=x^2+y^2,1<x<100,1<y<100
找出当 A 是不能被3整除的整数时,x=?,y=?,A=?
答案举例:x=2,y=2,A=8(8是不能被3整除的整数)
2018年01月31日 07点01分 1
level 12
Do[Do[If[Mod[(x^2 + y^2), 3] != 0,
Print["x=", x, ",y=", y, ",A=", x^2 + y^2]], {x, 2, 99}], {y, 2, 99}]
两个Do取x和y的循环,If结合Mod做条件判断
2018年01月31日 08点01分 3
太谢谢老师啦!感谢您授予的宝贵经验!
2018年01月31日 08点01分
Do写一个就够了,xy可以放到一个Do里;这才是mma的打开方式 Select[Flatten[Table[{i, j, i^2 + j^2}, {i, 100}, {j, 100}], 1], Mod[#[[3]], 3] != 0 &]
2018年01月31日 10点01分
回复
自由落体151
:谢谢!你的方法比我高太多啦
2018年02月01日 07点02分
吧务
level 7
Solve[A == x^2 + y^2 && 1 < x < 100 && 1 < y < 100 &&
A~Mod~3 != 0, {x, y, A}, Integers]
直接解方程,就是有点慢!
2018年02月02日 04点02分 4
level 8
这样写快一些
Solve[{Mod[x^2+y^2,3]==1||Mod[x^2+y^2,3]==2,1<x<100,1<y<100},{x,y},Integers]//Length//AbsoluteTiming
Solve[{A==x^2+y^2,1<x<100,1<y<100,Mod[A,3]==1||Mod[A,3]==2},{x,y,A},Integers]//Length//AbsoluteTiming
2018年02月02日 05点02分 5
level 12
Block[{grid = Tuples[Range[2, 99], 2]},
Select[{Sequence @@#, #.
#} & /@ grid, Mod[Last[#
], 3] != 0 &]
]
2018年02月02日 13点02分 7

2018年02月03日 03点02分
吧务
level 7
Flatten[Table[
If[x~Mod~3 == y~Mod~3 == 0, Nothing, {x, y}], {x, 2, 99}, {y, 2,
99}], 1]
2018年02月03日 01点02分 8
level 1
hscote 楼主
这真让我长见识了,在追求正解的同时进一步在速度上进行不断优化!谢谢各位老师!
2018年02月04日 09点02分 9
level 1
这个题不难啊,就100个数,用循环来遍历一边不就行了。
2018年02月05日 12点02分 10
1