精华内容
下载资源
问答
  • OJ1047: 对数表(C语言)
    2020-11-21 12:32:45

    题目描述
    输入两个正整数m和n,输出m到n之间每个整数的自然对数。
    输入
    输入包括两个整数m和n(m<=n),之间用一个空格隔开。
    输出
    每行输出一个整数及其对数,整数占4列,对数占8列,对数保留4位小数。
    样例输入 Copy
    2 4
    样例输出 Copy
    2 0.6931
    3 1.0986
    4 1.3863

    #include<stdio.h>
    #include<math.h>
    
    int main()
    {
    	int m,n,x;
    	double p;
    	scanf("%d%d",&m,&n);
    	for(x=m;x<=n;x++)
    	{
    		p=log(x);
    		printf("%4d%8.4lf\n",x,p);//此处输出之间勿打空格 ,否则改变列宽 
    	}
    	
    	return 0;
    }
    
    更多相关内容
  • 中算之有对数始自薛凤祚之比例对数表,因此,研究该对数表对全面了解对数的传入与发展具有重要的意义 .首先阐述了薛凤祚之比例对数表的特点,然后对比现代计算机系统中的对数值,指出表中的错误,并给出其比例对数的勘误...
  • 1047: 对数表 C语言

    2021-09-20 09:56:48
    1047: 对数表 时间限制: 1 Sec 内存限制: 30 MB 提交: 37757 解决: 21390 [状态] [讨论版] [提交] [命题人:admin] 题目描述 输入两个正整数m和n,输出m到n之间每个整数的自然对数。 输入 输入包括两个整数m和n(m<...

    1047: 对数表
    时间限制: 1 Sec 内存限制: 30 MB
    提交: 37757 解决: 21390
    [状态] [讨论版] [提交] [命题人:admin]
    题目描述
    输入两个正整数m和n,输出m到n之间每个整数的自然对数。
    输入
    输入包括两个整数m和n(m<=n),之间用一个空格隔开。

    输出
    每行输出一个整数及其对数,整数占4列,对数占8列,右对齐,对数保留4位小数。
    样例输入 Copy
    2 4
    样例输出 Copy
    2 0.6931
    3 1.0986
    4 1.3863

    #include <stdio.h>
    #include <math.h>
     
    int main()
    {
        int i, m, n;
        scanf("%d %d", &m, &n);
        for(i = m; i <= n; i++)
        {
            printf("%4d%8.4f\n", i, log(i));
        }
        printf("\n");
        return 0;
    }
    
    展开全文
  • 十七世纪的常用对数表是怎么算出来的 前不久,在网上看到了金泽长街小牛先生的博文《回到十七世纪,让我来编算一本常用对数表》,受益匪浅。在我上中学时,也曾对数学用表中的对数和三角函数值是怎么算出来的感到...

     十七世纪的常用对数表是怎么算出来的

        前不久,在网上看到了金泽长街小牛先生的博文《回到十七世纪,让我来编算一本常用对数表》,受益匪浅。在我上中学时,也曾对数学用表中的对数和三角函数值是怎么算出来的感到好奇,但始终不得其解。中学时学的是四位对数表,后来也见到过八位对数表和十位对数表,但看不懂,不会用。读过小牛先生的文章后,不仅知道了对数表是怎么算出来的,也豁然明白八位对数表是怎么回事了。受小牛先生博文启发,我也想到了一种更为简单精确的计算常用对数表的方法,不用手算开高次方,只需加减乘除开平方,就可以编制出常用对数表,这里介绍出来,与大家分享。

     

         第一步、计算第一组基础对数

      这组基础的对数值是:1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128, 1/256, 1/512, 1/1024, 1/2048, 1/4096, 1/8192共13个。

      计算的方法很简单,就是不断开平方。在常用对数里,10的对数是1,把10开平方就得到对数1/2的真数值,即√10,把计算结果再开平方就得到对数1/4的真数值,把计算结果再开平方就得到对数1/8的真数值,把计算结果结果再开平方就得到对数1/16的真数值,......一直进行下去,等开到1/8192就可以了。有这13个基础对数值,算8位对数表就够了,如果想要更精确的对数表,可以再多算几个基础对数,这里就不讨论了。

      开平方是简单的运算,列竖式就可以开出来,开12位有效数字一般不会超过半小时,计算这13个基础对数一个人几小时就可以完成。有了这组基础对数,就可以通过把若干个基础对数相加的方式,计算出从1/8192,2/8192,3/8192,......8191/8192的任何一个对数,这8191个对数在0.0000~1.0000之间均匀分布。

     

         第二步、计算第二组基础对数

      这第二组基础的对数值是:0.5, 0.1, 0.05, 0.01, 0.005, 0.001, 0.0005, 0.0001共八个。

      0.5即1/2,在第一组基础对数中就有;0.1=819.2/8192,介于819/8192与820/8192之间,其中

      819/8192=512/8192+256/8192+32/8192+16/8192+2/8192+1/8192

              =1/16+1/32+1/256+1/512+1/4096+1/8192

      对数相加,真数需相乘,将式中这6个基础对数对应的真数值相乘就可以得到819/8192的真数值。

      820/8192=512/8192+256/8192+32/8192+16/8192+4/8192

               =1/16+1/32+1/256+1/512+1/2048

      将式中这5个基础对数对应的真数值相乘就可以得到820/8192的真数值。

      819/8192与820/8192之间的间距仅有1/8192,非常小,可以近似当成直线处理,在算出对数819/8192和820/8192的真数值后,通过“线性内插法”就可以算出对数819.2/8192即0.1对应的真数值。如担心多次相乘以及做线性内插时导致误差积累增大,可以把对数0.1的真数值累乘计算5次方,看与0.5的真数值能否对得上,如有误差,用开方公式做修正,消除误差。由于这样的计算本身已经很精确,误差修正的工作不会太费事。

      得到对数0.1的真数值后,将之开平方就得到对数0.05的真数值。

      然后,0.01=81.92/8192,分别计算出对数81/8192和82/8192的真数值,再用“线性内插法”计算出对数0.01的真数值,当然,也要做误差修正。

      同样的方法,可以计算出对数0.005, 0.001, 0.0005, 0.0001的真数值。

      在算出这一组8个基础对数之后,就可以计算编制反对数表了。

     

         第三步、计算编制反对数表

      用对数做乘、除、乘方、开方运算得到的对数值,最终都要通过查反对数表才能得到真数,所以,反对数表是迟早必须要编的,而反对数表在计算方法上没有障碍,所以应该首先计算编制。有反对数表之后,再计算对数表就容易多了。

       有了对数0.5和0.1对应的真数值,就可以计算出从0.1,0.2,0.3,...0.9这9个对数对应的真数值了,这9个对数构成的反对数表可以叫一级反对数表。计算的方法很简单,就是对数相加,真数相乘,比如0.6的对数,对数0.6=0.5+0.1,所对应的真数就是

      3.162277660168*1.258925411794=3.98107170553...

      有了对数0.05和0.01对应的真数值以及一级反对数表,很容易就可以计算出从0.01,0.02,0.03,...0.99这99个对数对应的真数值,这99个对数构成的反对数表可以叫二级反对数表。计算的方法与前面相同,即对数相加,真数相乘。

      有了对数0.005和0.001对应的真数值以及二级反对数表,就可以计算出从0.001,0.002,0.003,...0.999这999个对数对应的真数值,这999个对数构成的反对数表可以叫三级反对数表。计算的方法与前面相同。

      有了对数0.0005和0.0001对应的真数值,就可以计算出从0.0001,0.0002,0.0003,...0.9999这9999个对数对应的真数值了,这9999个对数构成的反对数表可以叫四级反对数表。有四级反对数表应该就够了。要计算编制包含99999个对数的五级反对数表不是做不到,而是有没有必要,值不值得做。

      编制时要先完成一级反对数表,然后再扩充到二级反对数表、三级反对数表、四级反对数表,不要用很小的对数累乘得到大的对数,以避免误差累积增大。

      这样计算出的反对数表非常齐整,而且精确度有充分保证。

      扩充计算对数表只用两数相乘,不用除法。我觉得乘法比除法简单,工作量小。比如两个有10位有效数字的数相乘,会得到一个大约有20位的数字,但我们只要10位有效数字,后面的那些位数都要舍去,既然不需要,为什么要乘出来?所以在列竖式相乘时,那些注定不会加到前12位的数字,主要是乘数的后几位与被乘数的后几位相乘的数字,根本就别乘,直接画0补位,只要前12位,多出的两位用于四舍五入,故而乘法可以减少计算量。

      在编制反对数表过程中已经可以多找人手分摊工作量了。以前在书上看到过去有“制表工人”一说,应该是指专门从事计算制表的工作人员,如果是职业熟练工人,那应该会掌握很多计算技巧,计算速度也会快过常人,以我估计的计算量,如果有几十人同时工作,两三周做出反对数表应该没问题。

       

    第四步,计算给定真数的对数值,编制常用对数表

       在有了反对数表之后,再计算编制常用对数表就好办了,而且精确度有保证。方法就是“线性内插法”。以求2的对数为例,在反对数表里可以查到,对数0.3010对应的真数是1.9998618696,对数0.3011对应的真数是2.0003224078,那就在0.3010和0.3011之间做线性内插,求2的对数值,由于1.9998618696与2.0003224078的间距非常微小,所以得到的2的对数值也必是非常精准的。

      从1.001~9.999之间的所有数都可以用这种“线性内插”法算出,用这8999个数就可以编制出一个完整的常用对数表,而且精度极佳,只不过要计算8999个数据,计算量颇大。

      如果先算出那些质数(即素数)的对数,合数的对数由其质因子的对数相加而得到,计算量就可以大幅减少。

      10000以内的质数仅有1229个,而且那些较大的质数,其对数可以用两对数平均值算出,例如8663是个素数,在算出8662和8664这两个数的对数后,8663的对数就是8662和8664这两个数的对数的平均值。平均值计算实际也是“线性内插”,但简单得多,真正需要用比较麻烦的“线性内插”计算的质数只有几百个,合数的对数由其约数的对数相加得到,这种制表方法计算量要少一些,但精度也要稍逊一些。总的来说,编制对数表要比反对数表计算量要少一些。

      编制八位常用对数表和反对数表,计算量巨大,个人很难独力完成,如果有几十个人分工合作,一两个月制出常用对数表和反对数表,应该不算什么大问题。

      计算编制常用对数表的工作也一样可以找多人分担,以加快速度。

     

      对数函数不是直线函数,做线性内插必会有误差,误差大小决定于插值区间大小,区间越小,误差也越小。若想要更精确的对数表,我认为应该多增加算几个基础对数,尽量减小插值区间。第二组基础对数值必须进行检验,消除误差。

     

    上面就是我对常用对数表计算方法的思考。时隔几百年,十七世纪的常用对数表究竟是不是这样算出来的,有没有更好的方法就不知道了。以我的看法,本文叙述的方法已经足够简单精确了,没有技术障碍,若组织好了,即便是一些中学生也能完成这样的计算编制工作。

     

     

    展开全文
  • 对数表.txt

    2021-11-27 00:16:13
    对数表
  • 六位对数表

    2018-11-25 22:01:29
    作者: 不详 出版社: 中国工业出版社 出版时间: 1956 版次: 一版五印 印刷时间: 1971 装帧: 平装
  • 【ZZULIOJ】1047: 对数表

    千次阅读 多人点赞 2020-10-31 20:00:12
    1047: 对数表 题目描述 输入两个正整数m和n,输出m到n之间每个整数的自然对数。 输入 输入包括两个整数m和n(m<=n),之间用一个空格隔开。 输出 每行输出一个整数及其对数,整数占4列,对数占8列,右对齐,...

    ZZULIOJ题解

    1047: 对数表

    题目描述
    输入两个正整数m和n,输出m到n之间每个整数的自然对数。

    输入
    输入包括两个整数m和n(m<=n),之间用一个空格隔开。

    输出
    每行输出一个整数及其对数,整数占4列,对数占8列,右对齐,对数保留4位小数。

    样例输入

    2 4
    

    样例输出

       2  0.6931
       3  1.0986
       4  1.3863
    
    

    本题是对循环语句的考察,依旧是结合条件语句进行考察问题,这次是math函数和格式化输出的考察。

    代码

    #include<stdio.h>
    #include<math.h>
    int main()
    {
    	int  i,n,m,x;//定义循环变量i,以及两个数n和m,和输出结果x
    	double y;//以及对数结果y
    	scanf("%d %d",&n,&m);//键盘输入n和m
    	for(i=n;i<=m;i++)
    	{
        x=i;//令x等于i
        y=log(x);//y等于x取对数
    	printf("%4d%8.4lf\n",x,y);//按照格式输出结果
    	}
    }
    
    展开全文
  • zzuli OJ 1047: 对数表

    2019-09-20 02:06:40
    Description 输入两个正整数m和n,输出m到n之间每个整数的自然对数。 Input 输入包括两个整数m和n(m<=n),之间用一个空格隔开。... 每行输出一个整数及其对数,整数占4列,对数占8列,对数保留4位小...
  • ln10(ln对数表)

    千次阅读 2021-05-23 03:18:42
    ln10 大概等于2.3 ln10指的是:以无理数e为底数的对数是多少,也即是指e的多少次方等于10,其中e=2.71828,又因为e的2.3次方小于10, 所以ln10 大概等于2.3你好,用数学计算器等工具求对数时,当底数不是计算器中...
  • 原文地址:回到十七世纪,让我来编算一本常用对数表作者:小牛 自十八、九岁学习了对数后,就觉得造对数表真不简单。据说十七世纪那时,说如果谁发现了对数表上有一个数字错,就奖一两黄金。 据百科百度:纳皮尔...
  • 1047: 对数表

    2020-03-25 21:23:01
    1047: 对数表 时间限制: 1 Sec 内存限制: 30 MB 提交: 27614 解决: 15157 [状态] [讨论版] [提交] [命题人:admin] 题目描述 输入两个正整数m和n,输出m到n之间每个整数的自然对数。 输入 输入包括两个整数m和n(m<...
  • 常用对数表 有科学计算器吗?一键了之。若没有这样讲: 1、整数部分是一位非零数字。 lg2.573:在第1列找25再横行找“7”为4099,修正值“3”为5。所以lg2.573=0.4104。 2、整数部分不是一位非零数字的。用科学记数...
  • 在电脑上查对数方便很多哦,不用再翻书了,excel格式容易使用
  • 1047: 对数表 Java

    2021-09-20 10:19:05
    1047: 对数表 时间限制: 1 Sec 内存限制: 30 MB 提交: 37760 解决: 21392 [状态] [讨论版] [提交] [命题人:admin] 题目描述 输入两个正整数m和n,输出m到n之间每个整数的自然对数。 输入 输入包括两个整数m和n(m<...
  • 1048: 对数表

    2021-10-04 13:28:05
    每行输出一个整数及其对数,整数占4列,对数占8列,对数保留4位小数。 样例输入 Copy 2 4 样例输出 Copy 2 0.6931 3 1.0986 4 1.3863 #include<stdio.h> #include<math.h&g...
  • 1341: 对数表

    2020-11-01 00:35:09
    1341: 对数表 1.描述 输入两个正整数m和n,输出m到n之间每个整数的自然对数。 输入 输入包括两个整数m和n(m<=n),之间用一个空格隔开。 输出 每行输出一个整数及其对数,整数占4列,对数占8列,对数保留4位小数。...
  • 1047 : 对数表

    2020-07-05 18:31:43
    输入两个正整数m和n,输出m到n之间每个整数的以自然对数为底的对数。 输入 输入包括两个整数m和n(m<=n),之间用一个空格隔开。 输出 每行输出一个整数及其对数,整数占4列,对数占8列,对数保留4位小数。 样例...
  • 1047: 对数表 ZZULIOJ

    2020-07-06 10:18:50
    1047: 对数表 题目描述 输入两个正整数m和n,输出m到n之间每个整数的自然对数。 输入 输入包括两个整数m和n(m<=n),之间用一个空格隔开。 输出 每行输出一个整数及其对数,整数占4列,对数占8列,右对齐,对数...
  • 1047: 对数表-python

    2020-10-31 09:59:24
    1047: 对数表-python 题目描述: 输入两个正整数m和n,输出m到n之间每个整数的自然对数。 输入 输入包括两个整数m和n(m<=n),之间用一个空格隔开。 输出 每行输出一个整数及其对数,整数占4列,对数占8列,右...
  • 数学学习中常用的对数表 数学学习中常用的对数表 数学学习中常用的对数表
  • zzulioj 1047: 对数表

    2020-05-28 15:22:02
    题目描述 输入两个正整数m和n,输出m到n之间每个整数的自然...每行输出一个整数及其对数,整数占4列,对数占8列,右对齐,对数保留4位小数。 样例输入 2 4 样例输出 2 0.6931 3 1.0986 4 1.3863 在这里插入代码片 ...
  • 题目描述 ...每行输出一个整数及其对数,整数占4列,对数占8列,右对齐,对数保留4位小数。 样例输入 Copy 2 4 样例输出 Copy 2 0.6931 3 1.0986 4 1.3863 import java.util.*; public class M...
  • ZZULIOJ-1047,对数表(Java)

    千次阅读 2019-11-18 17:18:09
    题目描述: 输入两个正整数m和n,输出m到n...每行输出一个整数及其对数,整数占4列,对数占8列,右对齐,对数保留4位小数。 样例输入: 2 4 样例输出: 2 0.6931 3 1.0986 4 1.3863 程序代码: ...
  • 1047: 对数表 Python

    2021-09-20 10:03:00
    1047: 对数表 时间限制: 1 Sec 内存限制: 30 MB 提交: 37757 解决: 21390 [状态] [讨论版] [提交] [命题人:admin] 题目描述 输入两个正整数m和n,输出m到n之间每个整数的自然对数。 输入 输入包括两个整数m和n(m<...
  • zzulioj1047: 对数表

    2021-03-21 20:42:33
    1047: 对数表 题目描述 输入两个正整数m和n,输出m到n之间每个整数的自然对数。 输入 输入包括两个整数m和n(m<=n),之间用一个空格隔开。 输出 每行输出一个整数及其对数,整数占4列,对数占8列,右对齐,对数...
  • ZZULIOJ 1047: 对数表

    2020-06-23 22:28:17
    每行输出一个整数及其对数,整数占4列,对数占8列,右对齐,对数保留4位小数。 样例输入 2 4 样例输出 2 0.6931 3 1.0986 4 1.3863 (C语言代码) #include<stdio.h> #include<math.h> int main() { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 124,948
精华内容 49,979
关键字:

对数表

友情链接: StuMg.rar