2016-09-25 45 views
-2

我编写了一段时间的java,并且我刚刚启动了C++。 我决定做一个素数检查器,但由于某种原因,如果它是素数,它不会打印出来。素数检查错误C++

#include <iostream> 

using namespace std; 

int prime; 

int main() 
{ 
    while(true) 
    { 
    int primeChecker; 
    cout << "Enter a number to check if it is prime" << endl; 

    cin >> prime; 

    for(int i = 2; i <= (1/2)*prime; i++){ 
     cout << "Working" << endl; 
     if(prime % i == 0){ 
      cout << "This number is not prime" << endl; 
      primeChecker+=1; 
     } 
    } 
    if(primeChecker == 0){ 
     cout << "This number is prime" << endl; 
    } 
    } 
    return 0; 

} 
+3

'(1/2)'是'0'。 – LogicStuff

+0

您可能想要创建一个函数isPrime,它返回布尔值。输入/输出代码可以调用它,并且有一个简单的if/else检查。你可能想要upper_bound = sqrt(数字)。您可以检查%2,然后从3开始,然后加2(没有理由检查除2之外的任何偶数)。当你不知道它是什么时,我不喜欢你将变量命名为“素数”,也不会让它成为全局变量。也许还会验证输入,并提供退出的方法。 –

回答

2

需要用0来初始化primechecker另外写I的< =素/ 2相反,我< =(1/2)的素数。当你发现数字不是素数时,你应该再次使用break。你也需要检查1.我觉得这是你试图为写

#include <iostream> 

using namespace std; 

int prime; 

int main() 
{ 
    while(true) 
    { 
     int primeChecker=0; 
     cout << "Enter a number to check if it is prime" << endl; 
     cin >> prime; 
     if(prime==1) 
     { 
      cout << "This number is not prime" << endl; 
     } 
     else 
     { 
      for(int i = 2; i <= prime/2; i++) 
      { 
       cout << "Working" << endl; 
       if(prime % i == 0) 
       { 
       cout << "This number is not prime" << endl; 
       primeChecker+=1; 
       break; 
       } 
      } 
      if(primeChecker == 0) 
      { 
       cout << "This number is prime" << endl; 
      } 
     } 
    } 
    return 0; 
} 

此代码将花费更多的时间较大的值是什么。我建议你检查素数的平方根以确认数字是否为素数。祝你好运!