求帮助c语言
在一所监狱里有一条长长的走廊,沿着走廊排列着n个牢房,编号为1到n。每个牢房有一个囚犯,而且牢房的门都是锁着的。 一天晚上,狱卒很无聊,于是他就玩起了一个人的游戏。第一轮,他喝了一口威士忌,然后沿着走廊,将所有牢房的门打开。第二轮,他又喝了一口威士忌,然后又沿着走廊,将所有编号为2的倍数的牢房锁上。第三轮,他再喝一口威士忌,再沿着走廊,视察所有编号为3的倍数的牢房,如果牢房是锁着的,他就把它打开;如果牢房是开着的,他就把它锁上。他如此玩了n轮后,喝下最后一口威士忌,醉倒了。 当他醉倒后,一些犯人发现他们的牢房开着而且狱卒已经无能为力,他们立刻逃跑了。 给出牢房的数目n,请你确认最多有可能有多少犯人逃出了监狱?
#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
int c = 0;
int a[n+1];
a[0] = -1;
for(int i=1;i<=n;i++){ //1-n个牢房都是关的
a[i] = 0;
}
for(int i=1;i<=n;i++){ //第i口酒
for(int j=i;j<=n;j+=i){ //是i的倍数,关的打开,开的关闭
if(a[j]==0) a[j] = 1;
else a[j] = 0;
}
}
for(int i=1;i<=n;i++){ //统计有几个牢房是开的
if(a[i] == 1) c++;
}
printf("%d\n",c);
return 0;
}
#include<stdio>
#include <math.h>
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",(int)sqrt(n));
return 0;
}