我正在检查一个数字是否是素数,只检查从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表示素数。
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;
}