比这篇新的文章: Nokia Phonebook to Exel
比这篇旧的文章: 代码发芽网做RSS的两个类,Django做RSS真方便

求最大最小最大值因数

语言: Python, 标签: 素数 因数 2008/06/26发布 6个月前更新 更新记录
作者: 3751, 点击473次, 评论(3), 收藏者(0)

开关行号, 全选(Ctrl+C复制) | 一键复制:HTML, BBCode(Discuz!) , 源代码 | 查看:裸代码, 全屏
背景
主题: 字体:
Python语言: 求最大最小最大值因数
01 #coding:utf-8
02 #对由123456789这九个数字组成的9位数进行分解质因数
03 #例如 123457698=2x3x3x7x13x23x29x113,所以他的最大值因数是113
04 #总共有362880种可能,从中找出最大值因数最小的数字和最大值因数最大的数
05 import math
06
07 def generator(count, s):
08     if count == 1:
09         for i in s:
10             yield i
11     else:
12         for i in s:
13             _ = set(s)
14             _.remove(i)
15             for _ in generator(count-1, _):
16                 yield _ * 10 + i
17
18 primes = [2, 3]
19 def prime(idx):
20     if idx < len(primes):
21         return primes[idx]
22     new = primes[-1]+2
23     while True:
24         for i in primes:
25             if new % i == 0:
26                 break
27         else:
28             primes.append(new)
29             break
30         new += 2
31     return prime(idx)
32
33 def probe(number, idx, value=0):
34     if value > number:
35         return value
36     p = prime(idx)
37     sqrt = math.sqrt(number)
38     while number % p != 0 and sqrt >= p:
39         idx += 1
40         p = prime(idx)
41     if sqrt < p:
42         return number
43     return probe(number/p, idx, max(p, value))
44
45 if __name__ == '__main__':
46     _min = 10000000000, 10000000000
47     _max = 0, 0
48     for number in generator(9, set(range(1, 10))):
49         maxfactor = probe(number, 0)
50         if maxfactor < _min[0]:
51             _min = maxfactor, [number]
52         elif maxfactor == _min[0]:
53             _min[1].append(number)
54         if maxfactor > _max[0]:
55             _max = maxfactor, [number]
56         elif maxfactor == _max[0]:
57             _max[1].append(number)
58     print _min
59     print _max
打分:

所有评论,共3条:( 我也来说两句)

1
半瓶墨水 6个月前 回复
0
0
@3751
“总共有362880种可能”
是如何得出这个结论的?
2
3751 6个月前 回复
0
0
@1:
一共是9!个数也就是362880个数啊
3
半瓶墨水 6个月前 回复
0
0
呵呵如果你在注释里这么一写,不就清楚了,谁也不会没事情算这个呀

发表评论

注册登录后再发表评论