博文
整理我以前的PASCAL源程序-高精度计算(1)计算圆周率(2010-08-19 22:05:00)
摘要:序言
看着这些程序,使我想起了以前DOS时代。这些PASCAL程序是我多年前编的。有些在论坛贴过,有些没贴出来。最近在整理,希望对以后学PASCAL的人有用。
高精度计算(1)计算圆周率
以前就一个16位的编译器TP7,数组开大一点还不行。当时是想开一个数组,把一些常数计算得位数更从一些。没有用别人的算法,没有用别人的代码,就自己编,不求太高的效率。
最先计算的是圆周率,失败了几次,最后程序成功地算出一千位来。当时心情真的很兴奋。以前网络没有普及,拿着一本书,在那里对着数位,直到书上数位没有了,程序仍然显示着后面的数位……
后来改了几次。下面的程序,用Machin公式,在TP7下可以算出一万位圆周率来。
program spi;
{ pi=16acrtg(1/5)-4arctg(1/239) }
{ pi/4=1/1*(20/25-239/57121)-1/3(20/25^2-239/57121^2)+... }
{ Programmed by j.t.Chang.}
label ext,ext2;
const
dn=2504;
var
i,ip,c:integer;
k:longint;
a,b,sum:array[1..dn] of integer;
procedure oupt;
var i:integer;
k:longint;
procedure testk;
var
ch:char;
begin
if k mod 10=0 then write(' ');
if (k mod 50=0) and (k mod 1000<>0) then
writeln(......
摆了52年的“六角形”幻方(2007-09-10 14:37:00)
摘要: “幻方”是数学大世界中的一朵奇葩,吸引了无数人对它的痴迷。在“幻方”的世界中,人们主要研究的是正方形幻方的填法,对其他形状幻方的研究涉及较少。但是有一个“六角形”幻方的填法值得我们了解,因为这个幻方用了52年的光阴才让它与世人见面,这不得不让人们为之惊奇和感动。 上个世纪初,国外有个叫亚当斯的青年,他对幻方的痴迷让人吃惊。一次,他突发奇想:为何只研究正方形幻方呢?难道其他形状的没有了吗?于是,他着手研究“六角形”的幻方。 亚当斯理所当然首先想到的是一层的六角形幻方,即将1-7这七个自然数填到如图1所示的圆圈中,他经过证明,这样的六角形幻方是不能填出来的。于是,他又着手研究二层的六角形幻方的填法。如图2所示,将1-19这19个自然数填入圆圈中,使每一直线上的几个数之和都相等。
亚当斯起初觉得这样的幻方不一定很难,以为只要几个小时,也许就能摆出来。当他动手摆了几次后,才感到这样的幻方不是自己想像的那么容易。于是,为了更好的、更早的把这样的幻方摆出来,他做了19块小板,带在身上,只要一有空,他就拿出来摆。这一摆,就让他感到事情不是那么的简单。一次,两次,无数次;失败,失败,再失败。亚当斯从1910年开始,直到1957年,用了47年的时间,还是一点头绪也没有。失败,挫折,没让亚当斯退却。只是为了更早的摆出来,劳累让亚当斯病倒了。他躺在医院的病床上,也没有忘记他那心爱的、让人难以达到的六角形幻方。功夫不负有心人,一天,亚当斯在无意之中把它摆了出来,此时,亚当斯的心情非常激动,马上把他的摆法记了下来。这样,六角形的幻方摆出来了,心情高兴了,病也好了。在回家的路上,不知什么原因,亚当斯把他记六角形幻方的纸张给弄丢了。 亚当斯并不灰心,既然第一次摆出来了,第二次也肯定能摆出来。不料,这一丢失,亚当斯又用了5年,才第二次把六角形幻方摆出来(图略),这时,时间到了1962年。 亚当斯用了52年的时间,终于摆出了六角形幻方。图上一共有15条连线,这15条连线上的数字之和分别均为38。 当这件事过去了7年后,有一位大学生阿莱尔用电子计算机,仅仅用了17秒就摆出来了;同时也得出,六角形幻方仅此一例,再没有别的六角形幻方了。此幻方的稀有程度不得不让人记住它。
亚当斯的精神让我敬佩,同时我为他浪费了52年的时间感到惋惜。 现在任何一个编程好一点的计算......
