Domanda

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;

        }
    }
}
È stato utile?

Soluzione 3

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";

}

Altri suggerimenti

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";
}

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";
        }
    }

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;
    }       
}

}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top