Rubyから雑に移植したCrystalで枠を得るのははばかられる状況になったので、若干マイナーなところでKuin。
くいなちゃんはcui版だけで良いのでマルチプラットフォームに早く汁☆
composite.kn
func isqrt(n: int): int
if(n <= 0)
ret 0
end if
if(n < 4)
ret 1
end if
var x: int :: 0
var y: int :: n
while(x <> y & x + 1 <> y)
do x :: y
do y :: (n / y + y) / 2
end while
ret x
end func
func main()
var n: int :: 0
var cnt: int :: 0
var i: int :: 3
var s: int :: 0
var _: bool
do n :: cui@input().toInt(&_)
while _composite(cnt < n)
do i :: i + 1
block _chkprime
if(i < 2)
break _chkprime
end if
for j(2, @isqrt(i))
if(i % j < 1)
break _chkprime
end if
end for
; prime
skip _composite
end block
; composite
do cnt :: cnt + 1
do s :: s + i
end while
do cui@print(s.toStr())
do cui@print("\n")
end func