写出最大的素数

mar*_*cob 21 c# algorithm primes numbers

我正在尝试解决C#中最大的主要编程实践问题.问题很简单,打印出或写入文件号:2 58,885,161 - 1(其中有17,425,170位)

我已经设法使用神奇的GNU多精度算术库通过Emil Stevanof .Net包装器来解决它

var num = BigInt.Power(2, 57885161) - 1;
File.WriteAllText("biggestPrime.txt", num.ToString());
Run Code Online (Sandbox Code Playgroud)

即使所有当前发布的解决方案都使用此库,对我来说也感觉像是作弊.有没有办法在托管代码中解决这个问题?想法?建议?

PS:我已经尝试过使用.Net 4.0 BigInteger,但它永远不会结束计算(我等了5分钟,但与GMP解决方案的50秒相比已经很多了).

rei*_*der 7

它也是一个骗子而不是解决方案,但我使用IntX库解决了这个问题

IntX.Pow(2, 57885161, MultiplyMode.AutoFht) - 1;
Run Code Online (Sandbox Code Playgroud)

它跑了大约6分钟.尽管如此,这仍然不是一个真正的答案.看到"真实"的东西会很有趣.

编辑:使用C#秒表我认为计算只需要5秒钟,这是ToString的过程需要非常长的时间.