Advertisement
saurav_kalsoor

Help Mocha - KOTLIN

Sep 28th, 2021
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.14 KB | None | 0 0
  1. package com.company
  2.  
  3. import java.util.*
  4.  
  5.  
  6. private const val N = 300000
  7.  
  8. fun main() {
  9.     val sc = Scanner(System.`in`)
  10.     val d = sc.nextInt()
  11.     val result = helpMocha(d)
  12.     println(result)
  13. }
  14.  
  15. var isPrime = BooleanArray(N + 1)
  16. var primes = ArrayList<Long>()
  17.  
  18. fun sieve() {
  19.     for (i in 2..N) {
  20.         if (isPrime[i]) {
  21.             var j = (i * i).toLong()
  22.             while (j <= N) {
  23.                 isPrime[j.toInt()] = false
  24.                 j += i
  25.             }
  26.             primes.add(i.toLong())
  27.         }
  28.     }
  29. }
  30.  
  31. fun lowerBound(list: ArrayList<Long>, x: Long): Long {
  32.     val n = list.size
  33.     var lo = 0
  34.     var hi = n - 1
  35.     var res = n - 1
  36.     while (lo <= hi) {
  37.         val mid = lo + (hi - lo) / 2
  38.         if (list[mid] == x)
  39.             return x
  40.         else if (list[mid] > x) {
  41.             res = mid
  42.             hi = mid - 1
  43.         } else {
  44.             lo = mid + 1
  45.         }
  46.     }
  47.     return list[res]
  48. }
  49.  
  50.  
  51. fun helpMocha(d: Int): Long {
  52.     Arrays.fill(isPrime, true)
  53.     sieve()
  54.     val a = lowerBound(primes, (1 + d).toLong())
  55.     val b = lowerBound(primes, a + d)
  56.     return a * b
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement