pyhton 查找一个数的所有因子 以及 判断一个数是否是质数 两个小脚本
最近看到一个网站, 欧拉计划。挺好玩,都是一些算法题。这是本站: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 查找一个数的所有因子 以及 判断一个数是否是质数 两个小脚本的更多相关文章
- 算法之路(三)----查找斐波纳契数列中第 N 个数
算法题目 查找斐波纳契数列中第 N 个数. 所谓的斐波纳契数列是指: * 前2个数是 0 和 1 . * 第 i 个数是第 i-1 个数和第i-2 个数的和. 斐波纳契数列的前10个数字是: 0, 1 ...
- 使用二分查找判断某个数在某个区间中--如何判断某个IP地址所属的地区
一,问题描述 给定100万个区间对,假设这些区间对是互不重叠的,如何判断某个数属于哪个区间? 首先需要对区间的特性进行分析:区间是不是有序的?有序是指:后一个区间的起始位置要大于前一个区间的终点位置. ...
- 代码实现:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如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. ...
- python基础练习题(题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数)
day12 --------------------------------------------------------------- 实例019:完数 题目 一个数如果恰好等于它的因子之和,这个 ...
- 腾讯面试题 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 这个题目已经有一段时间了,但是腾讯现在还在用来面试.腾讯第一次面 ...
- 海量数据找相同数,高配词,不重复的数,判断一个数是否存在,查询串,不同电话号码的个数,中位数,按照query频度排序,topk
这类题目,首先需要确定可用内存的大小,然后确定数据的大小,由这两个参数就可以确定hash函数应该怎么设置才能保证每个文件的大小都不超过内存的大小,从而可以保证每个小的文件都能被一次性加载到内存中. 1 ...
- [算法]判断一个数是不是2的N次方
如果一个数是2^n,说明这个二进制里面只有一个1.除了1. a = (10000)b a-1 = (01111)b a&(a-1) = 0. 如果一个数不是2^n, 说明它的二进制里含有多一 ...
- 如何判断一个数是否为素数(zt)
怎么判断一个数是否为素数? 笨蛋的作法: bool IsPrime(unsigned n){ if (n<2) { //小于2的数即不是合数也不是素数 throw 0; ...
- 输入n个数和输出调整后的n个数
输入n个数和输出调整后的n个数 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 148 Solved: 118 [Submit][Status][We ...
随机推荐
- 使用Eclipse提供的Axis1.x生成WSDL文件以及Server和Client代码
使用Eclipse自带的Axis 1.x来创建一个web service应用的服务端和客户端 Axis 是SOAP WebService协议实现,SOAP实质上是一个基于HTTP POST的请求,以X ...
- Codevs 5208 求乘方取模
5208 求乘方取模 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 未定级 题目描述 Description 给定非负整数A.B.M,求(A ^ B) mod M. 输入描述 Inpu ...
- 通过telnet使用smtp协议发送邮件
smtp协议是一个简单的邮件传输协议,利用它我们可以将邮件发送给别人,这里将通过telnet这个程序利用smtp协议从网易向gmail发送一封邮件 网上不少有说使用telnet发送邮件的文章,我也看过 ...
- div+css3实现漂亮的多彩标签云,鼠标移动会有动画
div+css3实现漂亮的多彩标签云,鼠标移动会有动画 点击运行效果 <style> .dict { margin: 20px 0;clear:both ;text-align:left; ...
- (转载)通过dbgrideh 从数据集中选择合适的记录
通过dbgrideh 从数据集中选择合适的记录 //---------------------------------------------------------// 通过dbgrideh 从数据 ...
- (转载)EhLib 在 Delphi 7 下的安装方法
EhLib 在 Delphi 7 下的安装方法 1.将 EhLib 解压到一个目录,如:E:\VCL\EhLib: 2.将 EhLib 安装目录下 Common 目录.DataService 目录下的 ...
- pyqt中使用matplotlib绘制动态曲线
一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟 ...
- zzuli oj 1178 单词数
Description 统计一篇文章里不同单词的总数. Input 有多组数据,每组一行,每组就是一篇小文章.每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束. Output 每 ...
- STM32之DMA
一.DMA简介 1.DMA简介 DMA(Direct Memory Access:直接内存存取)是一种可以大大减轻CPU工作量的数据转移方式. CPU有转移数据.计算.控制程序转移等很多功能,但其实转 ...
- iOS性能调优
写在前面 本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员.这是他的个人网站:http://www.marcelofabri.com/ ...