python之质数判断
质数是什么?
所谓的质数就是只能被1和其本身所整除的数。
如果它不是质数,那么它的因子肯定是成对出现的。一个比它的平方根小,则另一个就要比平方根大。或者就是平方根例如9=3*3
# 直接用编程语言来判断就是如下的形式
for i in range(2, number):
if number % i == 0:
print '质数'
break
# 当进行质数判断的时候不需要判断到全部数字,只需要判断到平方根就可以了。
# 因为如果一个数不是质数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于平方根,另一个小于或等于平方根,并且成对出现。
import math
for i in xrange(2, int(math.sqrt(number))+2):
if number %i == 0:
print ‘质数’
break
递归求因子的例子:求一个正整数的所有不可分解的因子 90 = 2*3*3*5
先求最小因子并添加到列表中,递归调用,求整数除以最小因子后的那个数的最小因子。
恭喜我能想到这一点
result = [] import math def is_zhishu(number): for i in xrange(2, int(math.sqrt(number))+2): if number %i == 0: return False return True def get_yinzi(number): global result for i in xrange(2, int(math.sqrt(number))+2): if number % i == 0: result.append(i) break other = number/i if not is_zhishu(other): return get_yinzi(other) else: result.append(other) get_yinzi(90) print result