2012-10-05 30 views
4

警告:簡單的家庭作業,不知道我在做什麼尋找素未工作

所以,我試圖讓從1找到的第一個素數的程序到100並將它們打印在列表框中。這是我的代碼:

private bool IsPrime(int number) 
{ 
    int count; 
    if (number == 2) 
     return true; 
    for (count = 3; count < number; count = count + 2) 
    { 
     if (number % count == 0) 
      return false; 
    } 
    return true; 
} 

private void calculateButton_Click(object sender, EventArgs e) 
{ 
    int number; 
    for (number = 1; number < 100; number = number++) 
     if (IsPrime(number)) 
      primeList.Items.Add(number); 
} 

而且程序沒有捕獲任何語法錯誤,但它也每次我嘗試運行它的時候死機。任何想法爲什麼發生這種情況謝謝。

+1

是否引發任何異常?如果它凍結並且不會拋出異常,這意味着您的代碼需要很長時間才能運行。 – 3aw5TZetdf

+0

嘗試使用較少的數字(數字= 1;數字<10;數字++) –

+0

嗯,這可能會奏效。我給那一槍...... –

回答

9

您使用:

for (number = 1; number < 100; number = number++) 

,而你應該寫

for (number = 1; number < 100; number++) 

你應該閱讀這些文章,瞭解爲什麼你原來的代碼沒有遞增:for++ Operator

你可以學習++運營商的behaivour在一些測試代碼:

 int n = 0; 
     Console.WriteLine(n); //0 
     n = n++; 
     Console.WriteLine(n); //0 
     n = ++n; 
     Console.WriteLine(n); //1 
     n = n++; 
     Console.WriteLine(n); //1 
     n = ++n; 
     Console.WriteLine(n); //2 

另一個很好的例子是:

 int n = 0; 
     int x = n++; 
     int y = ++n; 
     Console.WriteLine(string.Format("x={0}", x)); //0 
     Console.WriteLine(string.Format("y={0}", y)); //2 
     Console.WriteLine(x + y); //n++ + ++n == 0 + 2 == 2 
     n = 0; 
     x = ++n; 
     y = n++; 
     Console.WriteLine(string.Format("x={0}", x)); //1 
     Console.WriteLine(string.Format("y={0}", y)); //1 
     Console.WriteLine(x + y); //++n + n++ == 1 + 1 == 2 
+0

哇,是的。就是這樣。謝謝,我覺得很愚蠢。 –

+2

@EvanJohnson你應該接受答案,如果它解決了你的問題。 –