-3

I need to use a boolean variable to identify if a number inserted in a text box is a prime number and be written in C#

protected void isPrimeButton_Click(object sender, EventArgs e)
{

    int TestNumber = int.Parse(primeNumberTextBox.Text);
    bool isPrime = true;

    for (int i = 0; i < TestNumber; i++)
    {
        while (TestNumber % i == 0)
        {
            bool isPrime = true;
            yesNoPrimeTextBox.Text = "prime";
            break;
        }

        while (TestNumber % i == 0)
        {
            bool isPrime = false;

            yesNoPrimeTextBox.Text = "not prime";
            break;

        }
    }
}
  • 6
    Is there a question? – Matthew Watson May 13 '14 at 10:43
  • There are algorithms here which will help http://en.wikipedia.org/wiki/Primality_test – Jerry May 13 '14 at 10:45
  • In the box called ‘Prime number checker’, the program returns “PRIME” if a number is prime and “NOT PRIME” if it is not. Add the code to the method handling clicks on the appropriate Calculate button. You must use a loop but are free to use the type you find the most suitable. – king programmer winbin May 13 '14 at 10:46

4 Answers4

1

Extract IsPrime as a method and you'll have something like this:

public static Boolean IsPrime(int value) {
  if (value <= 1) 
    return false;
  else if (value <= 3) // 2 and 3 are primes
    return true;
  else if (value % 2 == 0) // even numbers (2 excluded) are not primes
    return false;

  // Test odd numbers 3, 5, 7, ... as potential dividers
  // up to square root of the value
  int n = (int) (Math.Sqrt(value) + 1);

  for (int i = 3; i <= n; i += 2)
    if (value % i == 0)
      return false;

  return true;
}

...

protected void isPrimeButton_Click(object sender, EventArgs e) {
  int testNumber;

  if (!int.TryParse(primeNumberTextBox.Text, out testNumber)) {
    // primeNumberTextBox.Text is not a int (incorrect format)
    //TODO: probably you have to put some text into yesNoPrimeTextBox.Text
    return;
  }

  if (IsPrime(testNumber))
    yesNoPrimeTextBox.Text = "prime";
  else
    yesNoPrimeTextBox.Text = "not prime";
}
Dmitry Bychenko
  • 180,369
  • 20
  • 160
  • 215
1

Use this method to check : Also consider changing the return type , maybe you want it to return boolean instead of string

     public static string CheckPrime(int number) 
    {
        bool isPrime = true;
        for (int i = 2; i < number; i++)
        {
            if (number % i == 0)
            {
                isPrime = false;
                break;
            }
        }
        if (isPrime)
        {

            return number.ToString() + " is a Prime number";
        }
        else
        {
            return number.ToString() + " is not a Prime number";
        }
    }
Ramy M. Mousa
  • 5,727
  • 3
  • 34
  • 45
0

This should do it.

protected void isPrimeButton_Click(object sender, EventArgs e) {

int TestNumber = int.Parse(primeNumberTextBox.Text);
bool isPrime = false;

for (int i = 2; i < TestNumber-1; i++)
{
    if (TestNumber % i == 0)
    {
        isPrime = true;
        yesNoPrimeTextBox.Text = "prime";
        break;
    }       
}

}

Bull
  • 701
  • 1
  • 6
  • 13
0

Not very efficient, but this should work:

protected void isPrimeButton_Click(object sender, EventArgs e)
{

    int TestNumber = int.Parse(primeNumberTextBox.Text);
    bool isPrime = true;

    for (int i = 2; i < TestNumber; i++)
    {
        if (TestNumber % i == 0)
        {
            isPrime = false;
            break;
        }
    }
    if (isPrime)
        yesNoPrimeTextBox.Text = "prime";
    else
        yesNoPrimeTextBox.Text = "not prime";

}
Henrik
  • 23,186
  • 6
  • 42
  • 92