题目
如图所示,在二维平面上有无数个1x1的小方格。
我们以某个小方格的一个顶点为圆心画一个半径为1000的圆。
你能计算出这个圆里有多少个完整的小方格吗?
利用勾股定理解题,先画出下图找出规律:
我们利用每个完整方格距圆心最远点是否小于半径来判断方格是否完整存在于圆内,只用分析第一象限,最后直接乘4就行了。要计算的点就是上图蓝色圈起来的点,为什么坐标轴上的点不全,是因为其不是方格距圆心的最远点。根据勾股定理:a*a + b*b = c*c,所以我们可以列出 if 的判断条件。
代码如下:
r = 1000 # 半径为1000
count = 0 # 用来记方格数
for j in range(1, 1001): # 横坐标
for k in range(1, 1001): # 纵坐标
if j*j + k*k <= r*r: # 根据勾股定理所列的方程
count += 1 # 满足条件方格数加一
print(count*4) # 最后再*4 即为四个象限方格的总数
结果如下:
当然我们也可以直接吧四个象限一起来算:
r = 1000
count = 0
for j in range(-1000, 1001):
for k in range(-1000, 1001):
if j*j + k*k <= r*r and j != 0 and k != 0:
count += 1
print(count)
这里我们要注意的是要从-1000到1001 还要加上 j和k !=0的条件。