《算法C语言实现》————三道题目

 

1.对于N = 10,100和1000,记录你的运行环境中分别运行一下程序所花费的时间。(用python)

import datetime

global a
a = 0


def time_1(s):
    global a
    for i in range(s):
        for i in range(s):
            for i in range(s):
                a += 1




begin  =  datetime.datetime.now()


time_1(10)

end = datetime.datetime.now()

print str(end-begin)

 

 

 

改变time_1(s)中  s为  10   100  1000

分别对应的运行时间为   0:00:00.001000         0:00:00.119000   0:01:22.103000

 

 

2.用形如c0+c1N+c2N^2+c3N^3的表达式精确地描述练习2.2中程序的运行时间:对于N=10,100和1000,比较该表达式预测的时间与实际执行时间

 

不会

 

 

 

 

 

 

 

3.对于N=10^3,10^4,10^5和10^6,利用埃拉拖色尼筛法确定小于N的素数。

 

 

  埃拉托色尼筛法: 如果自然数i为素数,则设a[i]为1,否则设为0。首先把数组中的所有元素设为1,以表明没有任何数已被证明是非素数。然后,把数组中所对应索引处已证明是非素数(已知素数的倍数)的元素设为0。如果所有更小素数的倍数都已设为0,a[i]仍然为1,则可知它是素数。(话很长)

 

#include <stdio.h>
#define N 1000 //改这里就好了



main()
{
    int i, j, a[N];
    for (i = 2; i < N; i++) a[i] = 1;
    for (i = 2; i < N;i++)
        if (a[i])
            for (j = i; i*j < N; j++) a[i*j] = 0;
        for (i = 2; i < N;i++)
            if (a[i]) printf("%4d\n", i);
        
        getch();
}

 

posted @ 2017-03-12 21:18  elliottc  阅读(461)  评论(0编辑  收藏  举报