Skip to content

Commit 319200d

Browse files
add 2583
1 parent 8ee3ed6 commit 319200d

File tree

2 files changed

+51
-8
lines changed

2 files changed

+51
-8
lines changed

contest/src/main/java/com/github/contest/Execute.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.github.contest
22

33

4-
import com.github.contest.hashTable.findMissingAndRepeatedValuesProdVariant
4+
import com.github.contest.math.closestPrimes
55
import java.util.TreeMap
66

77

@@ -11,12 +11,7 @@ import java.util.TreeMap
1111

1212
fun main() {
1313

14-
findMissingAndRepeatedValuesProdVariant(
15-
arrayOf(
16-
intArrayOf(1, 3),
17-
intArrayOf(2, 2)
18-
)
19-
).also { it.printArray() }
14+
closestPrimes(19, 31).also { it.printArray() }
2015
}
2116

2217
fun generateTesting() {

contest/src/main/java/com/github/contest/math/MathLeetcode.kt

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.github.contest.math
22

3+
import kotlin.math.sqrt
4+
35
/**
46
* 1025. Divisor Game
57
*/
@@ -29,4 +31,50 @@ fun checkPowersOfThree(n: Int): Boolean {
2931
fun coloredCells(n: Int): Long = when {
3032
n == 1 -> 1L
3133
else -> coloredCells(n - 1) + 4L * (n - 1).toLong()
32-
}
34+
}
35+
36+
/**
37+
* 2523. Closest Prime Numbers in Range
38+
*/
39+
40+
41+
fun closestPrimes(left: Int, right: Int): IntArray {
42+
val primes = mutableListOf<Int>()
43+
val isPrime = BooleanArray(right + 1) { true }
44+
isPrime[0] = false
45+
isPrime[1] = false
46+
47+
for (p in 2..sqrt(right.toDouble()).toInt()) {
48+
if (isPrime[p]) {
49+
for (i in p * p..right step p) {
50+
isPrime[i] = false
51+
}
52+
}
53+
}
54+
55+
for (p in left..right) {
56+
if (isPrime[p]) {
57+
primes.add(p)
58+
}
59+
}
60+
61+
if (primes.size < 2) return intArrayOf(-1, -1)
62+
63+
var minDiff = Int.MAX_VALUE
64+
var result = intArrayOf(-1, -1)
65+
for (i in 0 until primes.size - 1) {
66+
val diff = primes[i + 1] - primes[i]
67+
if (diff < minDiff) {
68+
minDiff = diff
69+
result[0] = primes[i]
70+
result[1] = primes[i + 1]
71+
}
72+
}
73+
74+
return result
75+
}
76+
77+
private fun isPrime(number: Int): Boolean {
78+
for (i in number - 1 downTo 2) if (number % i == 0) return false
79+
return true
80+
}

0 commit comments

Comments
 (0)