为什么我的循环是无限的?我已经用 91 进行了测试

Why is my loop infinite? I have tested with 91

本文关键字:测试 循环 我的 无限 为什么      更新时间:2023-10-16

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

我添加了cout线以查看问题开始的位置,但它并没有真正显示

int countFactors(int num)
{
    cout << "Inside primen";
    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 不返回素数。

     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;
    }