Sieve of Eratosthenes算法的代码
In mathematics, the Sieve of Eratosthenes (Greek: κόσκινον Ἐρατοσθένους) is a simple, ancient algorithm for finding all prime numbers up to a specified integer.[1] It works efficiently for the smaller primes (below 10 million).[2] It was created by Eratosthenes, an ancient Greek mathematician. However, none of his mathematical works survived—the sieve was described and attributed to Eratosthenes in the Introduction to Arithmetic by Nicomachus. A prime number is a natural number which has exactly two distinct natural number divisors: 1 and itself. [素数的定义是,一个仅能被1和本身整除的自然数]
To find all the prime numbers less than or equal to a given integer n by Eratosthenes' method:
[可以通过以下的埃拉托色尼筛选法寻求所有小于整数n的素数]
Create a list of consecutive integers from two to n: (2, 3, 4, ..., n).
[列出从2到n的一串连续自然数]
Initially, let p equal 2, the first prime number.
[开始,先把2当作第一个素数,并赋值给变量p]
Strike from the list all multiples of p less than or equal to n. (2p, 3p, 4p, etc.)
[将该列自然数中划掉p的倍数]
Find the first number remaining on the list after p (this number is the next prime); replace p with this number.
[将剩下的自然数按原来顺序重新组成新的一列,并将第一个数赋给变量p]
Repeat steps 3 and 4 until p2 is greater than n.
[重复第三第四步,直到p的平方大于n]
All the remaining numbers in the list are prime.
[剩下的自然数就是所有小于n的素数]
import math
limit=1000000000
L=[True]*limit
def seive(x):
for i in xrange(x*2,limit,x):
L[i]=False map(seive,[2])
map(seive,xrange(3,int(math.ceil(math.sqrt(limit))),2))
primer=[]
for i in xrange(2,limit):
if L[i]: primer.append(i)
print primer
CentOS 5升级python版本(2.4>2.7)
日前在CentOS上搭建测试环境时候,遇到需要升级python版本的情况,于是就记录了整个升级的过程:
在CentOS5中自带的Python版本是2.4,但是目前许多基于Python的应用软件要求的Python版本应要高于2.4。升级python版 本的时候千万不能卸载python 2.4,再安装python2.7,这样会有无穷无尽的麻烦,保守的方式是直接安装python2.7的源码包,也就是python两个版本共存。(因为 Centos里面有很多程序是依赖着python,所有最好不要尝试去卸载python2.4)。
(1)下载/安装python
下载Python2.7.2.tar.bz2(http://www.python.org/ftp/python/2.7.2/Python- 2.7.2.tar.bz2)
$tar jxvf Python2.7.2.tar.bz2 $cd Python2.7.2
$./configure $make && make install 自此,python2.7安装后路径默认是在/usr/local/lib/python2.7 查看Python版本: $ /usr/local/bin/python2.7 -V
(2)建立软连接,使系统默认的python指向python2.7
正常情况下即使python2.7安装成功后,系统默认指向的python仍然是2.4版本,考虑到yum是基于python2.4才能正常工作,不敢轻 易卸载。如何实现将系统默认的python指向到2.7版本呢?
mv /usr/bin/python /usr/bin/python.bak (或者rm -rf /usr/bin/python)
ln -s /usr/local/bin/python2.7 /usr/bin/python
检验python指向是否成功 python -V
(3) 解决系统python软链接指向python2.7版本后,yum不能正常工作 方法:
$vi /usr/bin/yum 将文本编辑显示的#/usr/bin/python修改为#/usr/bin/python2.4,保存修改即可
linux命令手册-----rm(remove)
rm(remove)
功能说明:
删除文件或目录
语法 :
rm[-dfirv][--help][--version][文件或目录...]
包名称 :
coreutils
相关命令:
mdel
补充说明:
执行rm命令可删除文件或目录,如要删除目录,必须加上“-r”参数
参数 说明:
-
-d或--directory
直接把欲删除的目录的硬链接数目删成0,移除该目录
- -f或--force 强制删除文件或目录。本参数将会忽略放在它前面的“-i”参数
-
-i或--interactive
删除已有文件或目录之前先询问
-
-r、-R或--recursive
递归处理,将指定目录下的所有文件及子目录一并处理
-
-v或--verbose
显示命令执行过程
-
--help
帮助
-
--version
版本信息
命令实例:
使用mkdir [root@localhost /]# mkdir test [root@localhost /]# rm -r test rm:是否删除 目录 “test”? y
linux命令手册----CP(copy)
功能说明
复制文件或目录
语法
cp[-abdfilprRsuvx][-S<备份字尾字符串>][--help][--sparse=<使用时机>][--version][来源文件或目录][目的文件或目录]或cp[-abdfilprRsuvx][-S<备份字尾字符串>][--help][--sparse=<使用时机>][--version][来源文件或目录...][目的目录]
所属软件包
coreutils
相关命令
mcopy
相关信息
cp命令用来复制文件或目录,假如同时指定两个或两个以上的文件或目录,且最后的目的目录是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地不是一个已经存在的目录,则会出现错误信息。
参数
说明
-a或--archive
此参数的效果和同时指定“-dpR”参数相同
-b或--backup
删除、覆盖目的文件之前先备份,备份的文件会在字尾加上一个备份字符串
-d或--no-dereference
复制符号链接时,把目的文件或目录建立为符号链接,并指向源文件或目录连接的源文件或源目录。假如不加上这个参数,在复制过程中若遇到符号链接,则会直接复制该连接所指向的源文件或源目录,而不是重新建立一个指向该原始文件或目录的符号链接
-f或--force
强行复制文件或目录,不论目的文件目录是否已经存在
-i或--interactive
覆盖原有文件之前先询问
-l或--link
对来源文件建立硬链接,而非复制文件
-p或--preserve
保留源文件或目录的属性,包括所有者、所属组、权限和时间
-r
递归处理,将指定目录下的文件与子目录一并处理。若来源文件或源目录的类型,不属于目录或符号链接,则一律视为普通文件处理
-R或--recursive
递归处理,将指定目录下的所有文件及子目录一并处理
-s或--symbolic-link
对来源文件建立符号链接,而非复制文件
-S<备份字尾字符串>或--suffix=<备份字尾字符串>
用“-b”参数备份目的文件后,备份文件的字尾会加上一个备份字符串
默认的备份字尾字符串是符号~,可通过“-S”参数来改变它
-u或--update
使用这项参数之后,只会在来源文件的建立时间(Modification Time)晚于目的文件的时候,或是同名称的目的文件不存在时,才开始复制文件
-v或--verbose
显示命令执行过程
-x或--one-file-system
复制文件或目录存放的文件系统,必须与cp命令执行时所处的文件系统相同,否则复制进程不启动。即不处理在其他分区的文件
--help
帮助
--sparse=<使用时机>
设置存储稀疏文件(Sparse File)的时间。稀疏文件是一种内含大量连续0字节的文件,这种现象称之为空洞(Holes),许多的二进制文件都具有这种特性,假使文件系统有支持这种特性,这些空洞将不会占用大量的存储块,则对节省存放空间和提高系统性能都有益处。使用时机设为“auto”,则来源文件若是稀疏文件,目的文件也会是稀疏文件,这是cp命令的默认值,使用时机设为“always”,则目的文件将一概存储成稀疏文件。使用时机设为“never”,则目的文件将不会存储成稀疏文件
--version
版本信息
命令实例:
1)复制一个名字是file1的文件到另外一个目录下
[root@localhost /]# cp file1 newdir
2)复制一个文件从目录/home/public/的文件test.txt复制到目录/home/public/backup/的文件test.bak
[root@localhost /]#cp /home/public/test.txt /home/public/backup/test.bak
3)使用通配符复制文件
[root@localhost /]#cp *.txt newdir
Project Euler 13解题报告
Project Euler 12解题报告
linux命令apt-get参数以及用法详解
linux命令patch参数以及用法详解
patch作用:
补丁更新
patch语法:
gpm [参数][文件名]
patch参数:
-b 产生备份文件
-c 使用文本文件解释patch文件的用途
-d 目录 在做任何动作前先切换目录
-e 将结果翻译成批处理文件后输出
-f 不询问任何问题,强制运行
-i 修补文件 指定修补文件的位置
-l 忽略Tab和空格符
-s 安静模式,不显示错误信息
-v 显示版本信息
--binary 使用二进制模式来读写文件
--help 显示帮助文件
--dry--run 模拟并列出运行的结果,而不真的运行
patch示例:
patch file file.patch
linux命令xhost参数以及用法详解
xhost作用:
管理存取X服务器的权限
xhost语法:
gpm [+-][主机名或者IP位置]
xhost示例:
允许地址192.168.0.1对本机的X服务器有访问权限
xhost +192.168.0.1