📜  最大的素数 - C# (1)

📅  最后修改于: 2023-12-03 15:26:26.101000             🧑  作者: Mango

C#中求最大的素数

在计算机科学中,求素数是一个很有用的问题。本文将介绍如何在C#中求最大的素数。

算法介绍

求最大的素数,我们需要一个质数筛法。筛子的原理是遍历给定的范围,去掉范围内所有数的倍数,最后留下的就是质数。

该算法的步骤如下:

  1. 创建一个数值为true的布尔数组,记录每个数是否为质数。
  2. 从2开始,依次遍历数组中的每个元素,如果它是质数,则将它的倍数标记为false。
  3. 遍历完数组后,留下的所有值为true的元素,即为质数。
代码实现
public static int GetLargestPrime(int n)
{
    bool[] isPrime = new bool[n + 1];
    for (int i = 0; i < isPrime.Length; i++)
    {
        isPrime[i] = true;
    }

    for (int i = 2; i * i <= n; i++)
    {
        if (isPrime[i])
        {
            for (int j = i * i; j <= n; j += i)
            {
                isPrime[j] = false;
            }
        }
    }

    for (int i = n; i >= 2; i--)
    {
        if (isPrime[i])
        {
            return i;
        }
    }

    return -1;
}
测试示例
int n = 100; // 设置一个上限
int result = GetLargestPrime(n);
Console.WriteLine("The largest prime number less than {0} is {1}.", n, result);

输出:

The largest prime number less than 100 is 97.
总结

本文介绍了C#中求最大的素数的方法,采用质数筛法,算法步骤简单清晰,代码实现也很简单,可以供大家参考。