草庐IT

java - 使用单一方法获取功能性 Java 流中的主要因素?

此方法将接受Long并返回LongStream传递给该方法的任何数字的质数。factors.javapublicLongStreamfactors(longx){LongStreamfactorStream=LongStream.range(1,x+1).filter(n->x%n==0);returnfactorStream;}利用上面的方法先求公因数ok。primeFactors.javapublicLongStreamprimeFactors(longx){LongStreamprimeFactorStream=factors(x).filter(n->factors(n).co

Java:计算质数

所以我写了这段代码,我很自豪,因为我已经很久没有编码了。它的作用是请求一个数字,然后打印从1到该数字的所有质数。importjava.util.Scanner;classPrimeNumberExample{publicstaticvoidmain(Stringargs[]){//getinputtillwhichprimenumbertobeprintedSystem.out.println("Enterthenumbertillwhichprimenumbertobeprinted:");intlimit=newScanner(System.in).nextInt();//prin

java - 更有效地检查 int 是否为素数

我最近参加了学校的小型Java编程竞赛。我和我的搭档刚刚完成了我们的第一个纯oop类(class),大部分问题都超出了我们的范围,所以我们选择了这个(我稍微解释了一下):“给定一个输入整数n返回下一个素数int和它的反面也是质数,例如,如果n=18,您的程序应该打印31",因为31和13都是质数。然后,您的.class文件将传递一个包含1-2,000,000,000之间所有可能数字的测试用例,并且它必须在10秒内返回正确答案才能被视为有效。我们找到了解决方案,但如果测试用例较大,则需要10秒以上的时间。我相当确定有一种方法可以将循环范围从n,..2,000,000,000向下移动,因为

java - 欧拉计划 35 : HashSet gives incorrect results

我为ProjectEuler#35:CircularPrimes写了一个Java程序:Thenumber,197,iscalledacircularprimebecauseallrotationsofthedigits:197,971,and719,arethemselvesprime.Therearethirteensuchprimesbelow100:2,3,5,7,11,13,17,31,37,71,73,79,and97.Howmanycircularprimesaretherebelowonemillion?我的代码可以正常编译和运行,但是,根据我使用的数据结构,它会给出不同

java - 快速乘法和减法取模素数

我需要优化一些代码,我将整数vector(32位)乘以标量模p(其中p是质数(2^32)-5),然后从另一个vector模p中减去该vector.代码如下所示:publicstaticvoidmultiplyAndSubtract(longfragmentCoefficient,long[]equationToSubtractFrom,long[]equationToSubtract){for(inti=0;i我使用longs是因为Java不支持无符号整数,但是两个vector都是modp所以你可以期望每个数字都是0有什么优化的想法吗?modp操作占用了大部分执行时间,因此优化它的一种

java - 查找从 2 到 1000 的所有素数的算法不起作用

这是一段代码,使用语句计算从2到1000的所有素数,数字n是素数当且仅当:在第一个版本中,我认为我正确地实现了算法:publicclassGiuga{publicstaticvoidmain(String[]args){intn=2;while(n但是,由于变量sum增长很快,发生溢出,素数17之后将不再有输出。为了防止我必须使用这个:好吧,我做到了,这是我的2.版本:publicclassGiuga{publicstaticvoidmain(String[]args){intn=2;while(n我认为我做对了,但是现在输出在素数13之后停止了。一段时间以来,我一直在努力找出我的错误

java - Java 中的素数测试是如何工作的?

下面的代码片段检查给定数字是否为素数。有人可以向我解释为什么这有效吗?这段代码在给我们的Java考试学习指南上。publicstaticvoidmain(String[]args){intj=2;intresult=0;intnumber=0;Scannerreader=newScanner(System.in);System.out.println("Pleaseenteranumber:");number=reader.nextInt();while(j 最佳答案 整体理论条件if(number%j==0)询问number是否可

java - Java 中的 Arcane isPrime 方法

考虑以下方法:publicstaticbooleanisPrime(intn){return!(newString(newchar[n])).matches(".?|(..+?)\\1+");}我从来都不是正则表达式大师,所以谁能完整解释一下这种方法的实际工作原理?此外,与其他确定整数是否为素数的可能方法相比,它是否有效? 最佳答案 首先,请注意此正则表达式适用于以一元计数系统表示的数字,即1is111is2111is31111is411111is5111111is61111111is7等等。实际上,可以使用任何字符(因此表达式中有

algorithm - 使用一组质数按升序生成整数

我有一组素数,我必须仅使用这些素数按升序生成整数。例如,如果集合是p={2,5}那么我的整数应该是1,2,4,5,8,10,16,20,25,...有没有什么高效的算法可以解决这个问题? 最佳答案 删除一个数字并将它的所有倍数(通过集合中的质数)重新插入优先级队列是错误的(在问题的意义上)-即它生成正确的序列,但效率低下。它在两个方面效率低下-首先,它过度生产序列;其次,每个PriorityQueue操作都会产生额外的成本(操作remove_top和insert通常不是O(1),当然不在任何列表中-或基于树的PriorityQueu

c++ - 两个二项式系数的 GCD 模 10^9 + 7

给定0≤k≤n≤500000,0≤l≤m≤500000。我需要共同计算GCD(C(n,k),C(m,l))模10^9+7。我的尝试:我想到了fourmula的技巧:C(n,k)=n*(n-1)*...*(n-k+1)/k!例如,假设l>=k:GCD(C(n,k),C(m,l))==GCD(n*(n-1)*...*(n-k+1)/k!,m*(m-1)*...*(m-l+1)/l!)==GCD(n*(n-1)*...*(n-k+1)*(k+1)*...*l/l!,m*(m-1)*...*(m-l+1)/l!)==GCD(n*(n-1)*...*(n-k+1)*(k+1)*...*l,m*(