Kotlin

シクシク素数列 (Kotlin)

シクシク素数列
https://qiita.com/advent-calendar/2018/4949prime-series

Crystal
https://qiita.com/cielavenir/items/4c95fdf14b7a247e51e0

Kuin
https://qiita.com/cielavenir/items/60993a2b2885690a3a4a

Swift
https://qiita.com/cielavenir/items/db4c93532a53bfa33ac2

Kotlin
https://qiita.com/cielavenir/items/f3ccdd5ebf245aba417c

Pascal
https://qiita.com/cielavenir/items/4c962db6825d9a5eb511


4949.kt

fun isqrt(n:Int):Int{

if(n<=0)return 0
if(n<4)return 1
var x=0
var y=n
while(x!=y&&x+1!=y){x=y;y=(n/y+y)/2}
return x
}

fun isPrime(i:Int):Boolean{
if(i<2){
return false
}
for(j in 2..isqrt(i)){
if(i%j<1){
return false
}
}
return true
}

fun is4949(i:Int):Boolean{
if(i<=0)return false
if(i%10==4||i%10==9)return true
return is4949(i/10)
}

fun main(args: Array<String>){
val n=readLine()!!.toInt()
var i=2
var cnt=0
while(cnt<n){
if(is4949(i)&&isPrime(i)){
print(i)
if(cnt<n-1){
print(",")
}else{
println()
}
cnt+=1
}
i+=1
}
}