我开发了一个简单的程序来解决八皇后问题。现在我想用不同的元参数做更多的测试,所以我想让它更快。我经历了几次分析迭代,能够显着缩短运行时间,但我认为只有部分计算并发才能使其更快。我尝试使用multiprocessing和concurrent.futures模块,但它并没有显着改善运行时间,在某些情况下甚至减慢了执行速度。那只是提供一些上下文。我能够想出类似的代码结构,其中顺序版本胜过并发。importnumpyasnpimportconcurrent.futuresimportmathimporttimeimportmultiprocessingdefis_prime(n):ifn%2=
所以我只想找到给定数字的所有除数(数字本身除外)。目前,我有这个:publicstaticListproper_divisors(intx){Listtoreturn=newList();toreturn.Add(1);inti=0;intj=1;intz=0;while(primes.ElementAt(i)();returntoreturn;}其中primes是一个素数列表(假设它是正确的,并且足够大)。该算法的工作原理是它找到所有素因子,但不是所有因子(即给定34534,它返回{1,2,17267,31,1114}但错过{62,557}因为62是一个组合,因此也错过了557。我也
我即将实现DSAalgorithm,但有一个问题:choose"p",aprimenumberwithLbits,where512如何实现该数字的随机生成器?Int64的长度“只有”63位。 最佳答案 您可以使用以下代码生成具有n位的随机数:varrng=newRNGCryptoServiceProvider();byte[]bytes=newbyte[n/8];rng.GetBytes(bytes);BigIntegerp=newBigInteger(bytes);当然,结果是随机的,不一定是素数。BigIntegerclass在
我是C#的初学者,我正在尝试编写一个应用程序来获取用户输入的两个数字之间的素数。问题是:在大数(有效数在1到1000000000范围内)获取素数需要很长时间,根据我要解决的问题,整个操作必须在一个小的时间间隔内进行。这是更多解释的问题链接:SPOJ-Prime这是我的代码中负责获取质数的部分:publicvoidGetPrime(){intL1=int.Parse(Limits[0]);intL2=int.Parse(Limits[1]);if(L1==1){L1++;}for(inti=L1;i有没有更快的算法?提前致谢。 最佳答案
我认为F#应该比C#更快,我制作了一个可能很糟糕的基准测试工具,C#得到了16239毫秒,而F#在49583毫秒时表现更差。有人能解释一下这是为什么吗?我正在考虑离开F#并回到C#。是否可以使用更快的代码在F#中获得相同的结果?这是我使用的代码,我尽可能让它相等。F#(49583毫秒)openSystemopenSystem.Diagnosticsletstopwatch=newStopwatch()stopwatch.Start()letmutableisPrime=trueforiin2..100000doforjin2..idoifij&&i%j=0thenisPrimeigno
我想在C#2005中创建一个程序来计算给定输入的质因数。我想使用基本和最简单的东西,不需要为它创建一个方法,也不需要排列东西等。只是简单的模数。有什么代码可以满足我的需求吗?这是寻找简单因子的代码,我需要修改这段代码来计算素因子classProgram{staticvoidMain(string[]args){inta,b;Console.WriteLine("Pleaseenteryourinteger:");a=int.Parse(Console.ReadLine());for(b=1;b 最佳答案 inta,b;Console
我正在用一些与素数相关的方法编写一个小库。由于我已经完成了基础工作(又名工作方法),现在我正在寻找一些优化。当然,互联网是这样做的绝佳场所。然而,我偶然发现了一个舍入问题,我想知道如何解决这个问题。在我用来测试一个数字的素数的循环中,搜索到sqrt(n)比n/2甚至n-1更有效。但是由于舍入问题,一些数字被跳过,因此一些素数是跳过!例如,第10000个素数应为:104729,但“优化”版本最终为:103811。一些代码(我知道它是开放的以进行更多优化,但我一次只能处理一件事)://////Methodfortestingtheprimalityofanumbere.g.:returnI
我注意到F#和C#中看似等效的代码执行起来并不相同。F#慢了一个数量级。作为示例,我提供了我的代码,它在F#和C#中生成素数/给出第n个素数。我的F#代码是:letrecisprimex=primes|>Seq.takeWhile(funi->i*iSeq.forall(funi->x%i0)andprimes=seq{yield2yield!(Seq.unfold(funi->Some(i,i+2))3)|>Seq.filterisprime}letn=1000letstart=System.DateTime.Nowprintfn"%d"(primes|>Seq.nthn)letdu
我正在努力完成欧拉计划,但在问题03上遇到了障碍。我有一个适用于较小数字的算法,但问题3使用了非常非常大的数字。问题03:13195的质因数是5、7、13和29。600851475143的最大质因数是多少?这是我在C#中的解决方案,它已经运行了将近一个小时。我不是在寻找答案,因为我确实想自己解决这个问题。主要是寻求一些帮助。staticvoidMain(string[]args){constlongn=600851475143;//constlongn=13195;longcount,half,largestPrime=0;boolIsAPrime;half=n/2;for(longi
我的问题是在JavaScript中快速计算(g^x)modp,其中^是求幂,mod是模运算。所有输入都是非负整数,x大约有256位,p是2048位的质数,g最多可以有2048位。我发现的大多数可以在JavaScript中执行此操作的软件似乎都使用JavaScriptBigInt库(http://www.leemon.com/crypto/BigInt.html)。在我的慢速浏览器(带有SpiderMonkey的Firefox3.0)上,用这个库进行一次这样大小的幂运算大约需要9秒。我正在寻找至少快10倍的解决方案。对于2048位数字,使用平方和乘法(通过平方求幂,http://en.w