问题解析:
要解决本题,首先需要大家知道什么是平方数,什么是立方数。顾名思义,平方数就是可以表示为一个数的平方的数,例如25就是一个平方数,因为25=5²。立方数就是可以表示为一个数的立方的数,例如27就是一个立方数,因为27=33
那么在1~1000这1000个自然数中,有哪些平方数,哪些立方数呢?这个问题不太好回答。但是我们可以反向思考,有哪些数的平方或立方还在1~1000这个范围内呢?
假设在1~1000中只有n个数的平方还在1~1000这个范围内,如图所示
那么1000以内的平方数就一定有n个。
同理假设在1~1000中只有m个数的立方还在1~1000这个范围内,那么1000以内的平方数就一定是m个。
因为103=1000,所以1~9的立方都在1000以内,而大于10的数字的立方都在1000之外(例如113=1331),因此1000以内的立方数有9个。
同理因为31²<1000<32²,所以1000以内的平方数为31个。
那么是不是1000以内既不是平方数也不是立方数的自然数有1000-31-9=960个呢?
大家不要忽略,有些数可能既是平方数,也是立方数。如果按照上述方法1000-31-9,则会多减掉一次那些既是平方数也是立方数的个数。
那么既是平方数也是立方数(图中重叠部分)有哪些呢?最简单的找法就是在这9个立方数(13,23…93)中一一排查。不难发现1,64,729这三个数既是平方数,也是立方数,所以我们还要将960+3=963,这才是1000以内既不是平方数也不是立方数的自然数的个数。