2012-05-13 64 views
1

我試圖找到兩個給定數字之間的所有素數並將總數加起來。查找兩個數字之間的素數

我有這個循環,正確的質數檢測。

但是,由於某種原因,我不知道如何總結所有素數。

int a,b,i,j,sum=0; 

do 
{ cout << "Enter a number: "; 
    cin >> a; 
    if (a < 4 || a > 1000000) 
    { cout << "Input must be between 4 and 1000000 inclusive." << endl; 
    } 
}while (a < 4 || a > 1000000); 

do 
{ cout << "Enter a second number: "; 
    cin >> b; 
    if (b < 4 || b > 1000000) 
    { cout << "Input must be between 4 and 1000000 inclusive." << endl; 
    } 
}while (b < 4 || b > 1000000); 

if (a > b) 
{ int hold; 
    hold = b; 
    b = a; 
    a = hold; 
} 

cout << "The prime numbers between " << a << " and " << b << " inclusive are: " << endl; 
//int sum; 
for (i = a; i <= b; i++) 
{ 
for (j = 2; j <= i; j++) // Changed the < to <=, and got rid of semicolon 
{ 
    if (!(i%j)&&(i!=j)) break; 
    if (j==i) 
    { 
       cout << i << endl; 
       sum += i; 
       cout << sum ; 

    } 
} 
} 

變量sum給我垃圾的結果。

+0

修復您的格式和使用明智的變量名稱,謝謝你... – ScarletAmaranth

+4

你初始化它('sum')爲零嗎?範圍是多少? 'sum'的類型是什麼?您也可能遇到溢出,具體取決於範圍。 – amit

+0

我是那麼做的 int sum = 0; – Mahmoud

回答

4

這是不可能知道沒有確切的細節,但兩個最有可能的可能性是:

  1. sum沒有使用之前初始化爲0
  2. 您遇到overflow,因爲數字的總和太大而不適合它。這顯然取決於sum的類型和範圍。

編輯:

的editted代碼工作對我,對很小的範圍內(注意,對於較大的範圍,我們也應該考慮的問題#2)。
你可能會誤讀的結果,嘗試添加endlcout << sum ;

+0

我已經初始化爲零已經 仍然給我這個結果 – Mahmoud

+0

你的數字'a'和'b'有多大? – Thilo

+0

我編輯了代碼.. – Mahmoud

1

我不確定您是否向我們提供了所有信息。否則,對我來說,你似乎沒有初始化sum

int sum = 0; 
for (i = a; i <= b; i++) { 
    for (j = 2; j <= i; j++) { 
     if (!(i%j)&&(i!=j)) 
      break; 

     if (j==i) { 
      cout << i << endl; 
      sum += i; 
      cout << sum; 
     } 
    } 

}

+0

是什麼問題? 代碼編輯:) – Mahmoud

1

的問題似乎僅僅是您的格式。端部線圈更改爲以下,並且輸出將更加清晰(注:在你的代碼,SUM2未聲明 - 我說「INT SUM2 = 0」以上這一切)

for (i = a; i <= b; i++) 
{ 
    for (j = 2; j <= i; j++) // Changed the < to <=, and got rid of semicolon 
    { 
     if (!(i%j) && (i!=j)) break; 
     if (j==i) 
     { 
      cout << "i = " << i << endl; 
      sum += i; 
      cout << "sum = " << sum << endl; 

     } 
     sum2 += sum ; 
     //cout << "sum2 = " << sum2 << endl; 
    } 
} 
+0

非常感謝......這是工作^ _ ^ – Mahmoud

相關問題