10001番目の素数
30分プログラム、その266。10001番目の素数 via Project Euler - PukiWiki。
素数を小さい方から6つ並べると2,3,5,7,11,13であり、6番目の素数は13である。
10001 番目の素数を求めよ。
できませんでした。コードは書いたけど、全然計算が終了しない。
せっかくutil.streamの遅延リストを使うチェンスだと思ったのに。
使い方
$time gosh problem7.scm ^C Received too many signals before processing them. Exitting for the emergency... gosh problem7.scm 313.91s user 11.26s system 80% cpu 6:45.91 total
ソースコード
#! /opt/local/bin/gosh ;; -*- mode:scheme; coding:utf-8 -*- ;; ;; problem7.scm - ;; ;; Copyright(C) 2008 by mzp ;; Author: MIZUNO Hiroki / mzpppp at gmail dot com ;; http://howdyworld.org ;; ;; Timestamp: 2008/03/19 22:50:09 ;; ;; This program is free software; you can redistribute it and/or ;; modify it under MIT Lincence. ;; (use util.stream) (define (sieve xs) (let1 x (stream-car xs) (stream-cons x (sieve (stream-filter (lambda (n) (not (= (modulo n x) 0))) (stream-cdr xs)))))) (define prime (sieve (stream-iota -1 2))) (define (main _) (print (stream-ref prime 10000)))