2014-10-30 67 views
0

我想计算两个数字之间的素数的数量,我的程序运行良好,但打印出的答案加1.我不完全确定什么是错的用我的素数检查器。在1-100之间检查时,我得到26而不是25。函数来计算两个数字之间的素数

#include <iostream> 
using namespace std; 

int number_of_primes(int from, int to){ 

    int count=0; 
    for (int a=from ; a < to ; a++) 
    { 
     bool prime = true; 
     for (int c=2 ; c*c <= a ; c++) 
     { 
      if(a % c == 0) 
      { 
       prime = false; 
       break; 
      } 
     } 
     if(prime) count++; 
    } 


return count; 

} 

int main(){ 

int a=1; 
int b=100; 

cout<<number_of_primes(a, b)<<endl; 

return 0; 

} 
+4

您可以打印出每一个作为素数的条目,然后将您得到的列表与几乎任何搜索结果进行比较,以了解*“1到100之间有多少个素数”*(大多数匹配包括列表),看看你在计算什么,你不应该。 : -/ – HostileFork 2014-10-30 00:57:29

回答

3

你包括计数1,跳过它:

int number_of_primes(int from, int to) { 

    int count = 0; 
    for (int a = from; a < to; a++) 
    { 
     if (a == 1) 
      continue; // Skip 1 
     ... 

否则,正如马克建议,你不妨做:

a = max(from, 2) // Disallow 1/0 values 

代码的其余部分是正确的。

+0

或者只是'a = max(from,2)'... – 2014-10-30 00:59:33

+0

@MarkRansom好点,我会编辑问题谢谢 – 2014-10-30 01:00:39

+0

谢谢,我还没有继续下去,所以我没有办法'已经知道,但马克的方式也正常工作。 – user3371154 2014-10-30 01:05:15

2

你在计算1作为素数,但事实并非如此。

相关问题