Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company
- import java.util.*
- private const val N = 300000
- fun main() {
- val sc = Scanner(System.`in`)
- val d = sc.nextInt()
- val result = helpMocha(d)
- println(result)
- }
- var isPrime = BooleanArray(N + 1)
- var primes = ArrayList<Long>()
- fun sieve() {
- for (i in 2..N) {
- if (isPrime[i]) {
- var j = (i * i).toLong()
- while (j <= N) {
- isPrime[j.toInt()] = false
- j += i
- }
- primes.add(i.toLong())
- }
- }
- }
- fun lowerBound(list: ArrayList<Long>, x: Long): Long {
- val n = list.size
- var lo = 0
- var hi = n - 1
- var res = n - 1
- while (lo <= hi) {
- val mid = lo + (hi - lo) / 2
- if (list[mid] == x)
- return x
- else if (list[mid] > x) {
- res = mid
- hi = mid - 1
- } else {
- lo = mid + 1
- }
- }
- return list[res]
- }
- fun helpMocha(d: Int): Long {
- Arrays.fill(isPrime, true)
- sieve()
- val a = lowerBound(primes, (1 + d).toLong())
- val b = lowerBound(primes, a + d)
- return a * b
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement