c#求范围内素数的示例分享(c#求素数)


当然,下面是一个C#示例,用于查找并打印指定范围内的所有素数(质数)。这个示例采用了最基本的方法,即逐个检查范围内的每个数是否为素数。


using System;

class Program
{
    static void Main(string[] args)
    {
        Console.Write("请输入范围的下限:");
        int lower = Convert.ToInt32(Console.ReadLine());
        Console.Write("请输入范围的上限:");
        int upper = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine($"{lower}到{upper}之间的素数有:");

        for (int num = lower; num <= upper; num++)
        {
            if (IsPrime(num))
            {
                Console.WriteLine(num);
            }
        }
    }

    // 方法:判断一个数是否为素数
    static bool IsPrime(int num)
    {
        if (num <= 1) return false; // 负数、0和1不是素数
        if (num <= 3) return true; // 2和3是素数

        // 此数必须能被2和3以外的数整除,才可能是非素数
        if (num % 2 == 0 || num % 3 == 0) return false;

        // 只需检查到sqrt(num)即可,因为如果num有一个因子大于它的平方根,
        // 那么它必定还有一个小于或等于它的平方根的因子。
        for (int i = 5; i * i <= num; i += 6)
        {
            if (num % i == 0 || num % (i + 2) == 0)
                return false;
        }

        return true;
    }
}

这段代码首先通过`Console.ReadLine()`方法从用户那里获取范围的下限和上限,然后使用一个`for`循环遍历这个范围内的每个数。对于每个数,它调用`IsPrime`方法来检查该数是否为素数。`IsPrime`方法通过一系列条件检查来判断一个数是否为素数,包括它是否小于等于1(不是素数),是否小于等于3(是素数),以及是否能被2或3以外的数整除。最后,它只检查到该数的平方根即可,因为如果一个数有一个大于其平方根的因子,那么它必定还有一个小于或等于其平方根的因子。