运用C语言解答,最好有注释

Moxin为了给小王缓和心情,给小王买来了n个开关,给小王降压,但是小王的强迫症发作了,如果小王按了某个数都会把这个数的倍数全按一遍,比如按了2就会把2,4,6,8~,n全按一遍,一个开关被按一下就会改变状态,一开始所有的开关都是关闭的,小王从1开始按到了n(按的时候按照,先把所有的倍数按一遍,比如按完了2的所有倍数,接下来就按3的所有倍数),请问有几个开关是打开的?

Input
给出一个n(文件里多组数据)1<=n<=10^9

Output
给出开着的灯的数量

SampleInput
2
SampleOutput
1

1,首先确认一个灯亮着的标准,这个数 亮着的条件为 这个数的约数为基数 例如 1 count=1 亮 2 count=2 不亮 3 count= 2 不亮 4 count =3 亮 写函数确认是否亮. bool light(int n)
2.从1开始遍历到n 记录sum 如果 light==true 则sum+1;
sum最终值即 最终亮着的灯的数量

int light(int n)
{
    int count = 0;
    int i = 0;
    for (i = 1; i <= n; i++)
    {
        if (n % i == 0)
        {
            count++;
        }
    }
    if (count % 2 == 1)
    {
        return 1;
    }
    return 0;
}
int main()
{
    int n;
    int i;
    int sum = 0;
    printf("请输入灯的总数:");
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        int isLight = light(i);
        if (isLight == 1)
        {
            sum++;
        }
    }
    printf("亮着的灯的数量为:%d",sum);
    return 0;
}