故障排除代码

时间:2017-06-19 20:24:18

标签: c++

这个程序应该输入6并返回第6个素数,依此类推。

#include<iostream>
#include<cmath>
using namespace std;

bool isPrime(int num)
{
int factor=2;
while(factor<=num/2)
{
    if(num%factor==0)
        return false;
    factor++;
}
return true;
}

int main()
{
int num=2, count=0, whichprime;
cin>>whichprime;
while(count<whichprime)
{
    if(isPrime(num)==true)
    {
        count++;
        num++;
    }
}
cout<<num-1;
}

但是,它没有用(除了第一和第二素数)。对于其余部分,光标只在输出页面上闪烁。有人可以指出错误吗?

1 个答案:

答案 0 :(得分:0)

工作版本的变化很小:

#include<iostream>
#include<cmath>
using namespace std;

bool isPrime(int num)
{
int factor=2;
while(factor<=num/2)
{
    if(num%factor==0)
        return false;
    factor++;
}
return true;
}

int main()
{
int num=2, count=0, whichprime;
cin>>whichprime;
while(count<whichprime)
{
    if(isPrime(num)==true)
    {
        count++;
    }
    num++;
}
cout<<num-1;
}

(将 num ++; 移出 if 语句)