zoukankan      html  css  js  c++  java
  • 求质数几种算法

    求某个范围内质数的算法

    一、直接应用质数原理:

    质数原理:只能被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)

  • 相关阅读:
    详谈 Jquery Ajax 异步处理Json数据.
    基于Jquery+Ajax+Json+高效分页
    JSON资料整理
    站立会议第七天
    站立会议第六天
    站立会议第五天
    站立会议第四天
    用户场景分析
    站立会议第三天
    站立会议第二天
  • 原文地址:https://www.cnblogs.com/ServiceboyNew/p/3294299.html
Copyright © 2011-2022 走看看