• 求质数几种算法


    求某个范围内质数的算法

    一、直接应用质数原理:

    质数原理:只能被2~其本身-1的任意一个数字,如果都不可以被除尽,那么肯定是质数。

    源码:

    static bool IsPrime(int num)
            {
                for (int i = 2; i <= num-1;i++)
                {
                    if (num % i == 0) return false;
                }
                return true;
            }

    时间复杂度:O(n)
    改进版一:

    把上方算法num-1改成Math.Sqrt(num),虽然时间复杂度还是O(n),但是如果数字越大,效果越明显

    改进版二:

    一个合数一定可以分解成若干的质数的乘积(2除外),那么我们可以预存质数在一个列表中,然后直接从已有的质数中进行除法判断,代码如下:

    namespace Csharp
        {
            public class MainTest
            {
                public static List<int> primes = new List<int>();
    
                static bool IsPrime(int num)
                {
                    for (int i = 0; i < primes.Count; i++)
                    {
                        if (num % primes[i] == 0) return false;
                    }
                    return true;
                }
                static void Main(string[] args)
                {
                    int num = 0;
                    //Count how many prime numbers are generated
                    int counter = 0;
                    Console.WriteLine("Please input a number:");
                    num = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Results are:");
                    for (int i = 2; i < int.MaxValue; i++)
                    {
                        if (IsPrime(i))
                        {
                            primes.Add(i);
                            Console.WriteLine(i);
                            counter++;
                            if (counter == num)
                            {
                                break;
                            }
                        }
                    }
                }
            }
         }

    时间复杂度:O(n)(仅考虑质数判断部分),空间复杂度S(n)

  • 相关阅读:
    Unity 3D:控制相机旋转、移动、缩放等功能
    电子公文传输系统验收3-开发环境
    冲刺 day7
    电子公文传输系统2-贡献排序
    程序运行
    实验三-电子公文传输系统1-个人贡献
    thread同步测试
    第五章学习总结
    第三周学习java第四章学习总结及体会!
    第一章学习过程问题小结
  • 原文地址:https://www.cnblogs.com/ServiceboyNew/p/3294299.html
Copyright © 2020-2023  润新知