【问题标题】:boolean variable to identify Prime number asp.net [duplicate]用于识别素数 asp.net 的布尔变量 [重复]
【发布时间】:2014-06-30 23:54:00
【问题描述】:

我需要使用布尔变量来识别插入文本框中的数字是否为质数并用 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;

        }
    }
}

【问题讨论】:

  • 有问题吗?
  • 这里有一些算法可以帮助en.wikipedia.org/wiki/Primality_test
  • 在名为“素数检查器”的框中,如果一个数是素数,则程序返回“PRIME”,如果不是,则返回“NOT PRIME”。将代码添加到方法处理点击相应的计算按钮。您必须使用循环,但可以随意使用您认为最合适的类型。

标签: c# asp.net loops while-loop boolean


【解决方案1】:

应该这样做。

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

}

【讨论】:

    【解决方案2】:

    提取 IsPrime 作为一个方法,你会得到这样的东西:

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

    【讨论】:

      【解决方案3】:

      效率不是很高,但这应该可以:

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

      【讨论】:

        【解决方案4】:

        使用此方法检查: 还要考虑改变返回类型,也许你希望它返回布尔值而不是字符串

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-30
          • 2017-12-16
          • 1970-01-01
          • 2021-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-02
          相关资源
          最近更新 更多