求给出算法问题出自哪里
// LampNN.cpp : 定义控制台应用程序的入口点。/*N盏灯,N个人,各自从0开始编号,灯编号为人编号的数时,那个人能拉那个灯,
如第一个人能拉所有的灯,第二个能拉编号为2,4,6,8,10....依次类推,现给出N,求N个人过后亮着灯的个数*/
//
#include "stdafx.h"
#include "iostream"
using namespace std;
bool countCan(int, int);
bool LightOn(int); //函数声明
int main() //主函数入口
{
int N = 0; //初始化参数,N为灯的数量
cout << "enter the amount of lamp:\n";
cin >> N;
int i = 0; //第i个人
int j = 0; //第j个灯
int countSum = 0;//总计数器
int countSingle = 0;
for (j = 1; j <= N; j++)
{
for (i = 1; i <= N; i++)
{
if (countCan(j, i))
countSingle++; //第j盏灯能被拉时,countSingle自动加1
}
if (LightOn(countSingle)) //N个人过后如果灯是亮的则计数器加1
countSum++;
}
cout << countSum; //输出亮着的灯的数量
return 0;
}
bool countCan(int j, int i) //函数功能:判断第i个人能否拉第j盏灯
{
if (j % i == 0) //灯号与人号是倍数关系则可拉灯
return true;
else
return false;
return 0;
}
bool LightOn(int m)//判断被拉过m次后灯的亮与灭
{
if (m % 2 == 0)
return false;//被拉偶数次不亮
else
return true;
return 0;
}
//现在的问题在于,程序可以正常跑,但结果是借的,求大神指问题出在哪里