Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Author : Saurav Kalsoor
- // Sort By Primes - KOTLIN
- import java.util.*
- var sc: Scanner = Scanner(System.`in`)
- fun main() {
- val n: Int = sc.nextInt()
- val arr: ArrayList<Int> = ArrayList<Int>()
- for (i in 0 until n) {
- val input: Int = sc.nextInt()
- arr.add(input)
- }
- val result: ArrayList<Int> = sortPrimeNonPrime(arr, n)
- for (i in 0 until n) print(result.get(i).toString() + " ")
- println()
- }
- fun sortPrimeNonPrime(arr: ArrayList<Int>, n: Int): ArrayList<Int> {
- val maxLimit = 10001
- val primesSet: HashSet<Int> = HashSet<Int>()
- val isPrime = BooleanArray(maxLimit)
- for (i in 2 until maxLimit) isPrime[i] = true
- for (i in 2 until maxLimit) {
- if (isPrime[i]) {
- primesSet.add(i)
- var j: Int = i * i
- while (j < maxLimit) {
- isPrime[j] = false
- j += i
- }
- }
- }
- val primes: ArrayList<Int> = ArrayList<Int>()
- val nonPrimes: ArrayList<Int> = ArrayList<Int>()
- for (i in 0 until n) {
- if (primesSet.contains(arr.get(i))) {
- primes.add(arr.get(i))
- } else {
- nonPrimes.add(arr.get(i))
- }
- }
- Collections.sort(primes)
- Collections.sort(nonPrimes, Collections.reverseOrder())
- val result: ArrayList<Int> = ArrayList<Int>()
- var j = 0
- var k = 0
- for (i in 0 until n) {
- if (primesSet.contains(arr.get(i))) {
- result.add(primes.get(j))
- j++
- } else {
- result.add(nonPrimes.get(k))
- k++
- }
- }
- return result
- }
Add Comment
Please, Sign In to add comment