n个牢房,犯人睡着了。狱卒无聊喝酒,第1轮打开所以牢房,第2轮隔一个开一个(2,4,6,),第3轮隔两个开一个(3,6,9,),如果牢房已被打开就锁上,以此类推。n轮后,狱卒喝的不省人事,犯人发现后逃跑。求多少犯人逃走。
#include <iostream>
using namespace std;
bool hs[101];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int m;
cin>>m;
for(int j=0;j<=100;j++)
{
hs[j]=0;
}
/*
for(int k=1;k<=m;k++)
{
cout<<hs[k]<<" ";
}
cout<<endl;*/
for(int j=2;j<=m;j++)
{
for(int k=j;k<=m;k++)
{
if((k%j)==0)
{
hs[k]=!hs[k];
}
}
/*
for(int k=1;k<=m;k++)
{
cout<<hs[k]<<" ";
}
cout<<endl;*/
}
int js=0;
for(int j=1;j<=m;j++)
{
if(hs[j]==0)
{
js++;
}
}
cout<<js<<endl;
}
return 0;
}