DEV Community

Discussion on: Project Euler #7 - 10001st prime

Collapse
 
flrnd profile image
Florian Rand

Using sieve of Eratosthenes method

package main

import (
    "fmt"
    "math"
)

func primeEratosthenes(a []bool, n int) []bool {
    for i := 2; i < int(math.Sqrt(float64(n))); i++ {
        if a[i] {
            for j := i * i; j < n; j += i {
                a[j] = false
            }
        }
    }
    return a
}

func main() {
    a := make([]bool, n+1)
    for i := range a {
        a[i] = true
    }

    primes := primeEratosthenes(a, 100000)
    var pList []int

    for i, v := range primes {
        if v {
            pList = append(pList, i)
        }
    }
    pList = pList[2:]
    fmt.Println(pList[10000])
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
moose profile image
moose

class Sieve {
val magicnum: Int = 10001
fun buildSieve(startNumber: Int = 1, endNumber: Int = 100000): ArrayList {
var map = arrayListOf(NumObjects("na", 0))
for (i in startNumber..endNumber) {
map.add(NumObjects("na", i))
}
return map
}

fun doIncrement(iteration: Int, array:ArrayList<NumObjects>):ArrayList<NumObjects>{
    for(i in iteration..array.size step iteration){
        if(i+ iteration > array.size) {
            break;
        }
        array[i].hit="hit"
    }
    return array
}
fun doSieve(): Int {
    var sieveArray = buildSieve()
    val iterators: Array<Int> = arrayOf(2, 3, 5, 7)
    iterators.forEach {
        sieveArray = doIncrement(it, sieveArray)
    }
    var aff = sieveArray.filter{s-> s.hit == "na"}
    println(aff.get(ass.size-1).num)
    return aff.elementAt(magicnum-1).num
}
Enter fullscreen mode Exit fullscreen mode

}
class NumObjects(hit:String,num:Int){
var hit: String = hit
var num: Int = num
}