题目描述
有N盏电灯排成一行,依次编号为1,2,3,…,N。
现各有一个开关,开始灯都亮着的。现在还有N个人,第一人走过来依次把1和1的倍数电灯的开关都拉一下。第三个人走过来依次把3和3的倍数的开关都拉一下,第五个人走过来依次把5和5的倍数的开关都拉一下(按奇数的规律)…
问最后都有哪些灯是关着的?
输入格式
1个整数N(其中5≤N≤30)。
输出格式
分若干行输出,每一行一个数据,分别为关着的灯泡的编号。
样例输入
10
样例输出
1
2
4
8
9
程序如下
#include<iostream>
using namespace std;
int a[33];
int main()
{
int i,n,j;
cin>>n;
for(i = 1; i <= n; i++)
{
a[i] = 1;
}
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j = j + 2)
{
if(i % j == 0)
{
a[i] = 1 - a[i];
}
}
}
for(i = 1; i <= n; i++)
{
if(a[i]== 0)
{
cout<<i<<endl;
}
}
return 0;
}