问题:今有邮箱150个,按序编号。全部关闭。邮递员从二号开始一次将2的倍数的邮箱打开,然后数倍数为3的邮箱,已经打开的关闭,已关闭的打开。依次操作倍数为4,5,6,。。。。。。150为止。输出最后关闭的邮箱号码。
#include<iostream>
using namespace std;
int main()
{
int g[150];
for(int i=0;i<150;i++)
{
g[i] = i+1;
}
for(int j=1;j<150;j++)
{
for(int m=j;m<150;m++)
{
if(g[m]==0&&(m+1)%(j+1)==0)
g[m] = m+1;
else
if(g[m]!=0 && g[m]%(j+1)==0)
g[m] = 0;
}
}
for(int p=0;p<150;p++)
{
if(g[p]!=0)
cout<<g[p]<<endl;
}
return 0;