为什么我的循环无限?我用91测试过

问题描述 投票:-3回答:1

我正在检查一个数字是否是素数,只检查从3到其sqaure根的任何奇数是否是它的因子,一旦它有一个那么数字不是素数。我不明白为什么我的循环看似无限。

我已经添加了cout行来查看问题出现的位置并且它没有真正显示

int countFactors(int num)
{
    cout << "Inside prime\n";
    int factors = 0, x = 0, i;
    x = int(sqrt(num));
    for (i = 3; i <= x; i += 2)
    {
        cout << "Inside prime for \n";

        while(factors < 1)
        {
            cout << "Inside Prime while";
            if (num % i == 0)
            {
                factors++;
            }
        }
    }
    return factors;
}

我期望函数从19向上接收任何数字,检查它是否具有来自3的奇数的任何因子,一旦找到因子循环退出,因为该数字不是奇数,因为1本身和额外数字是因子。函数返回0表示素数或1表示素数。

c++
1个回答
0
投票
     int countFactors(int num)
     {
         int factors = 0, x=0, i,y=1;
        x = int(sqrt(num));
        while(y>0){
        for (i=3;i<=x;i+=2)
        {
            if (num%i==0)
                {
                    factors++;
                    y--;

                }

        }
        if(factors ==0)
           {
              y--;
           }
        }

        return factors;
    }