C#找梅森素数

C#找梅森素数

梅森素数是由梅森数而来。

所谓梅森数,是指形如2p-1的一类数,其中指数p是素数,常记为Mp 。如果梅森数是素数,就称为梅森素数。比如2^2-1=3,2^3-1=7,2^5-1=31,2^7-1=127,指数P也是素数,同时也用M2,M3,M5,M7表示。

用因式分解法可以证明,若2n-1是素数,则指数n也是素数;反之,当n是素数时,2n-1(即Mp)却未必是素数。前几个较小的梅森数大都是素数,然而梅森数越大,梅森素数也就越难出现。

2008年8月23日,美国加州大学洛杉矶分校的计算机专家史密斯终于发现超过1000万位的梅森素数 。 它有12978189位数,如果用普通字号将这个巨数连续打印下来,它的长度可超过50公里!这一成就被美国的《时代》杂志评为 “2008年度50项最佳发明” 之一,排名在第29位。

2013年1月,美国中央密苏里大学数学教授柯蒂斯·库珀领导的研究小组发现了第48个梅森素数 。[12] 这一发现被英国《新科学家》周刊评为当年自然科学十大突破之一。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;

namespace ConAppPrimeNumber2
{
    //Mersenne prime number 
    //梅森素数的公式2^P-1(用2的幂次方减1表示,其中P也是一个素数)
    //比如2^2-1=3,2^3-1=7,2^5-1=31,2^7-1=127,指数P也是素数
    //同时也用M2,M3,M5,M7表示

    class Program
    {
        static void Main(string[] args)
        {

            System.Diagnostics.Stopwatch s = new Stopwatch();


            PrimeNumber.testPower();
            System.Console.WriteLine();

            s.Reset();
            s.Start();
            PrimeNumber.Find5();
            s.Stop();
            System.Console.WriteLine("Watch Time:{0}m, {1}s, {2}ms", s.Elapsed.Minutes, s.Elapsed.Seconds, s.ElapsedMilliseconds);

            System.Console.WriteLine();

            s.Reset();
            s.Start();
            PrimeNumber.Find6();
            s.Stop();
            System.Console.WriteLine("Watch Time:{0}m, {1}s, {2}ms", s.Elapsed.Minutes, s.Elapsed.Seconds, s.ElapsedMilliseconds);
        }
    }


    public class PrimeNumber
    {
        static int n = 100000;   //查找100(n=100)以内的素数    
        //static int n = 1000000;
        static bool IsPN = false;  //找到素数就设置为true
        static 

你可能感兴趣的:(算法,c#,梅森素数,算法)