2014-10-30 4 views
0

두 숫자 사이의 소수의 수를 계산하려고하는데 프로그램이 잘 돌아가고 있지만 응답에 플러스 1이 인쇄되어 있습니다. 무엇이 잘못되었는지 정확히 모르겠습니다. 내 프라임 번호 검사기로 1-100 사이를 점검 할 때 25 대신 26이 나옵니다.두 숫자 사이의 소수의 수를 계산하는 함수

#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

답변

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)'... –

+0

@ MarkRansom 좋은 지적, 나는 고마워 질문을 편집 할 것이다 –

+0

덕분에, 나는 계속 가지 못했고, 그것을 알았지 만 표식은 잘 작동합니다. – user3371154

2

1은 소수로 계산하지만 그렇지 않습니다.

관련 문제