Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
29
Task/Prime-decomposition/Groovy/prime-decomposition-1.groovy
Normal file
29
Task/Prime-decomposition/Groovy/prime-decomposition-1.groovy
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
def factorize = { long target ->
|
||||
|
||||
if (target == 1) return [1L]
|
||||
|
||||
if (target < 4) return [1L, target]
|
||||
|
||||
def targetSqrt = Math.sqrt(target)
|
||||
def lowfactors = (2L..targetSqrt).findAll { (target % it) == 0 }
|
||||
if (lowfactors == []) return [1L, target]
|
||||
def nhalf = lowfactors.size() - ((lowfactors[-1]**2 == target) ? 1 : 0)
|
||||
|
||||
[1] + lowfactors + (0..<nhalf).collect { target.intdiv(lowfactors[it]) }.reverse() + [target]
|
||||
}
|
||||
|
||||
def decomposePrimes = { target ->
|
||||
def factors = factorize(target) - [1]
|
||||
def primeFactors = []
|
||||
factors.eachWithIndex { f, i ->
|
||||
if (i==0 || factors[0..<i].every {f % it != 0}) {
|
||||
primeFactors << f
|
||||
def pfPower = f*f
|
||||
while (target % pfPower == 0) {
|
||||
primeFactors << f
|
||||
pfPower *= f
|
||||
}
|
||||
}
|
||||
}
|
||||
primeFactors
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
((1..30) + [97*4, 1000, 1024, 333333]).each { println ([number:it, primes:decomposePrimes(it)]) }
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
def isPrime = {factorize(it).size() == 2}
|
||||
(1..60).step(2).findAll(isPrime).each { println ([number:"2**${it}-1", value:2**it-1, primes:decomposePrimes(2**it-1)]) }
|
||||
Loading…
Add table
Add a link
Reference in a new issue