/有一天晚上,邮差Peter感到非常无聊,为了打破夜班的单调,他使用邮局中的一行邮箱进行了以下的实验。这些邮箱被从1-150进行了编号,然后从邮箱2开始,他打开了所有编号为偶数的邮箱的门,而保持其他邮箱的门关着。接着,从邮箱3开始,每个3个邮箱,如果这个邮箱的门是关着的他就打开这个邮箱的门,而如果门是开着的,他就关上门。然后他每隔4个邮箱重复这个过程,再每隔5个邮箱重复这个过程如此下去。当结束时,他被关着的邮箱的分布所惊讶了。编写一个程序来判断哪些邮箱是关着的。/
#include<iostream>
#include<new>
using namespace std;
const int CAPACITY = 150;
int main()
{
int *array = new int[CAPACITY];//创建一个动态数组
for (int i = 0; i < CAPACITY; i++)//将150个门默认为关/0
{
array[i] = 0;//0关1开
}
for (int j = 2; j <= CAPACITY; j++)//每隔j个邮箱,从2开始到150
{
for (int i = 0; i < CAPACITY; i++)
{
if ((i + 1) % j == 0)//改变第j个门的状态
{
if (array[i] == 1)
array[i] = 0;
else
array[i] = 1;
}
}
}
for (int i = 0; i < CAPACITY; i++)
{
if (array[i]==0)
cout << i+1<<endl;
}
delete []array;//释放内存
}
最终的结果如下图:都是平方关系