最近看到一个网站, 欧拉计划。挺好玩,都是一些算法题。这是本站:http://projecteuler.net/problems 这个是中文站:http://pe.spiritzhang.com/

下面贴两个小脚本,低端玩具

1.找出一个数的所有因子:

#encoding:utf-8
import math def yinzi(n):
list_yinzi = []
if n <= 2:
return list_yinzi
for i in range(2, int(math.sqrt(n)) + 1):
"""
为什么循环范围定在平方根呢?:因为一个数的因子是成对的,a=b*c。也就是说:找到一个因子b,肯定会找到相对应的另外一个因子c(a/b)。所以我们的工作量减少了一半。
又有:一个因子变大,另一个因子必然要变小。假设b永远是小的那个,c是大的那个,那么b的最大值就是a的平方根。也就是b=c=(根号a)的时候。所以循环范围定在[1 , a的平方根+1],+1的原因是为了能够取到a的平方根避免遗漏。
"""
#如果找到了一个因子,那么把其相对应的另一个因子一同加入到因子列表中
if n % i == 0:
list_yinzi.extend([i, n/i]) #此处的set为了去重,因为会出现两个相同的平方根的情况。所以去掉重复
#sorted重排序是因为,因子都是成对成对找出来的,也就是说一次找到的两个因子肯定会有一大一小。这样把所以因子找完放在一起,大小排序就乱了
return sorted(set(list_yinzi))

2.判断一个数是否是质数 :

#encoding:utf-8
import math def is_zhishu(n):
if n <=1:
return False
for i in range(2, int(math.sqrt(n)) + 1):
"""循环范围同查找因子类似,由于因子是成对出现的,所以只需要循环到小于平方根的范围就好"""
if n % i == 0:
return False
return True

pyhton 查找一个数的所有因子 以及 判断一个数是否是质数 两个小脚本的更多相关文章

  1. 算法之路(三)----查找斐波纳契数列中第 N 个数

    算法题目 查找斐波纳契数列中第 N 个数. 所谓的斐波纳契数列是指: * 前2个数是 0 和 1 . * 第 i 个数是第 i-1 个数和第i-2 个数的和. 斐波纳契数列的前10个数字是: 0, 1 ...

  2. 使用二分查找判断某个数在某个区间中--如何判断某个IP地址所属的地区

    一,问题描述 给定100万个区间对,假设这些区间对是互不重叠的,如何判断某个数属于哪个区间? 首先需要对区间的特性进行分析:区间是不是有序的?有序是指:后一个区间的起始位置要大于前一个区间的终点位置. ...

  3. 代码实现:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.第二个完全数是28, //它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加, //编程找出1000以内的所有完数。

    import java.util.ArrayList; import java.util.List; //一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3. ...

  4. python基础练习题(题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数)

    day12 --------------------------------------------------------------- 实例019:完数 题目 一个数如果恰好等于它的因子之和,这个 ...

  5. 腾讯面试题 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?

    腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?  这个题目已经有一段时间了,但是腾讯现在还在用来面试.腾讯第一次面 ...

  6. 海量数据找相同数,高配词,不重复的数,判断一个数是否存在,查询串,不同电话号码的个数,中位数,按照query频度排序,topk

    这类题目,首先需要确定可用内存的大小,然后确定数据的大小,由这两个参数就可以确定hash函数应该怎么设置才能保证每个文件的大小都不超过内存的大小,从而可以保证每个小的文件都能被一次性加载到内存中. 1 ...

  7. [算法]判断一个数是不是2的N次方

    如果一个数是2^n,说明这个二进制里面只有一个1.除了1. a  = (10000)b a-1 = (01111)b a&(a-1) = 0. 如果一个数不是2^n, 说明它的二进制里含有多一 ...

  8. 如何判断一个数是否为素数(zt)

    怎么判断一个数是否为素数? 笨蛋的作法: bool IsPrime(unsigned n){    if (n<2)    { //小于2的数即不是合数也不是素数    throw 0;    ...

  9. 输入n个数和输出调整后的n个数

    输入n个数和输出调整后的n个数 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 148  Solved: 118 [Submit][Status][We ...

随机推荐

  1. IOS 学习日志 2015-3-13

    前面几天在看C ,但是没有做笔记,现在在看Objective--C ,开始做笔记,希望每一天都有成长吧 Objective--C 关键字 1 @import 导入 注意<>||" ...

  2. c#基础班笔记

    1.静态与非静态的区别:是否有static 非静态: 1)在非静态类中,既可以有实例成员,也可以有静态成员 2)在调用实例成员,通过  对象.实例成员 在调用静态成员时,通过  类名.静态成员 静态: ...

  3. eval 如何定义函数

    eval(compile('''def fun(): print 'bbb' ''', '<string>', 'exec')) fun()

  4. Python正则表达式学习

    1.Python的正则表达式需要用到re模块,有两个方法:match和search,match从第一个字符串开始匹配,search从任意字符串开始匹配,所以match比search严格. 如果匹配成功 ...

  5. zend studio 9.0.4 安装破解

    转载于 http://www.geekso.com/ZendStudio9-key 注册破解步骤第一步:如果已经安装过Zend Studio 9.0.4的,请打开Zend Studio 9.0.4,在 ...

  6. 关于优化C#程序的五十种方法

    一.用属性代替可访问的字段 1..NET数据绑定只支持数据绑定,使用属性可以获得数据绑定的好处: 2.在属性的get和set访问器重可使用lock添加多线程的支持. 二.readonly(运行时常量) ...

  7. Forget asp.net membership,ASP.NET Identity Overview

    http://www.asp.net/identity http://www.asp.net/identity/overview/getting-started/introduction-to-asp ...

  8. [转]JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解

    [转] JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 - dreamman的日志 - 网易博客http://blog.163.com/dreamman_yx/blog/st ...

  9. Android中JNI编程的那些事儿(1)

    转:Android中JNI编程的那些事儿(1)http://mobile.51cto.com/android-267538.htm Android系统不允许一个纯粹使用C/C++的程序出现,它要求必须 ...

  10. python学习之---匿名函数,返回函数,偏函数

    1. 返回函数: 所谓的返回函数,指的是函数作为返回值.高阶函数除了可以接受函数作为参数外,同样可以接受函数作为结果返回.以下是一个可变参数的求和例子,一般求和函数是如此这般定义的: >> ...