exp(pi * sqrt(n))が整数に近くなるnを探す(失敗)
30分プログラム、その138。http://ja.doukaku.org/60/をやってみる。
浮動小数点の誤差のために、うまくいかなかった。世の中には、任意精度の浮動小数点ライブラリが存在するらしいですよ。
使い方
gosh> (main) (0 37 58 117 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 .........................)
ソースコード
#! /opt/local/bin/gosh ;; -*- mode:scheme; coding:utf-8 -*- ;; ;; find_int.scm - ;; ;; Copyright(C) 2007 by mzp ;; Author: MIZUNO Hiroki <hiroki1124@gmail.com> ;; http://mzp.sakura.ne.jp/ ;; ;; Timestamp: 2007/09/21 21:58:55 ;; ;; This program is free software; you can redistribute it and/or ;; modify it under the same terms as Scheme itself. ;; (use srfi-1) (use math.const) (define (f n) (exp (* pi (sqrt n)))) (define (near? n) (< (abs (- n (round n))) 0.0001)) (define (find-near-int nums) (map cadr (filter (lambda (x) (near? (car x))) (zip (map f nums) nums)))) (define (main) (find-near-int (iota 200)))