2005年12月08日 星期四 10:27
已知 x = range(10) x == [0, 1, 2, 4, 5, 6, 7, 8, 9] x = range(2, 10) x == [2, 4, 5, 6, 7, 8, 9 ,9] x = range(2,10,4) x == [2, 6] 假定1不为质数 且有 x = prange(10) x == [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] x = prange(2, 10) x == [5, 7, 11, 13, 17, 19, 23, 29] x = prange(2, 10, 4) x == [5, 11, 17, 23, 29] 求 def prange([start,] stop [,step]) => list of prime numbers 题外话: 做这个有什么用?难道仅仅是好玩? 不,我在做一个报表输出的东西,存在着某一模块内容的显示与不显示问题。 在PHP/Pyton/Perl里用位操作的话能够实现,但是实现起来可能不太方便,并且写出来的代码会很晦涩;使用字符串来做标志的话也可以,但是这种处理将会在一定程度上影响代码的效率;用bool值处理一个模块是否输出的话也可以,但是如果报表模块要增加减少的话,还得花相对多的时间去修改代码...... 于是考虑每个模块用一个质数来代替,只需要做一个除法来处理来判断该模块输不输出,即使有新增的模块,所作的代码的改动工作也不会很多(应该可是说得是变相的位操作),这就涉及到了取一个质数范围的操作。 本人已实现PHP版本的笨拙的函数,感觉做这件事情很好玩,所以将此想法出来,感兴趣的朋友不妨思考下?或许会对你们的工作也有帮助。 -- riverfor's showtime. riverfor's game
2005年12月08日 星期四 10:38
> 不,我在做一个报表输出的东西,存在着某一模块内容的显示与不显示问题。 > 可以写到配置文件中去呀 > 在PHP/Pyton/Perl里用位操作的话能够实现,但是实现起来可能不太方便,并且写出来的代码会很晦涩;使用字符串来做标志的话也可以,但是这种处理将会在一定程度上影响代码的效率;用bool值处理一个模块是否输出的话也可以,但是如果报表模块要增加减少的话,还得花相对多的时间去修改代码...... > 于是考虑每个模块用一个质数来代替,只需要做一个除法来处理来判断该模块输不输出,即使有新增的模块,所作的代码的改动工作也不会很多(应该可是说得是变相的位操作),这就涉及到了取一个质数范围的操作。 > > 本人已实现PHP版本的笨拙的函数,感觉做这件事情很好玩,所以将此想法出来,感兴趣的朋友不妨思考下?或许会对你们的工作也有帮助。 > 不是很清楚最后你的模块是如何控制的,你只是说了如何找到哪些模块需要输入,但如何控制却没有提。同时除法怎么就能控制了没看懂。另外模块的增删为什么要改程序呢?如果写到配置文件或有一个统一的导入模块,只修改一个文件就行了。或者可以自动根据配置文件来生成导入模块,这样不就自动了嘛。如果使用稳定了,自动生成过程就可以跳过去,一旦发生改变,则再次自动生成。这样可以通过文件内容的md5或简单通过时间来进行判断。 -- I like python! My Blog: http://www.donews.net/limodou NewEdit Maillist: http://groups.google.com/group/NewEdit
2005年12月08日 星期四 11:34
River Yan 写道: >题外话: >做这个有什么用?难道仅仅是好玩? > >不,我在做一个报表输出的东西,存在着某一模块内容的显示与不显示问题。 > > 不错,有新意 >在PHP/Pyton/Perl里用位操作的话能够实现,但是实现起来可能不太方便,并且写出来的代码会很晦涩; > 你不外乎是想弄个东西来汇总所有的判断标志嘛,用位操着的话我想可以用一个类 来封装,就可以多次重复使用,写的时候麻烦点但以后是一劳永逸啊,也值得的 >使用字符串来做标志的话也可以,但是这种处理将会在一定程度上影响代码的效率;用bool值处理一个模块是否输出的话也可以,但是如果报表模块要增加减少的话,还得花相对多的时间去修改代码...... >于是考虑每个模块用一个质数来代替,只需要做一个除法来处理来判断该模块输不输出,即使有新增的模块,所作的代码的改动工作也不会很多(应该可是说得是变相的位操作),这就涉及到了取一个质数范围的操作。 > > > 你就是利用了质数因子的唯一性而已,看似简单,我认为有几点问题: 1。有没有产生质数数组的快速算法? 好像见过一个产生大量质数的近似快速算法,但不精确 如果用那个经典的判断所有因子的办法那就不敢想象了^_^ 2。当数组很长的时候质数会不会很大,其所有单元的乘积会不会成为天文数字? 不知道你的意思是不是用乘积^_^ 我试了一下,产生101个质数的时候,乘积为 257742614754868316937988084561386245084525440105509250954318325727017 918870723371899929322341793294103892418994148410542151699601546741832 617953638436279944072980418788682453341495300190580109062278796954007 6319408964006230 虽然python可以处理这种天文数字,不过效率应该不会很好 3。用字符串做标志的话,效率怎么样? 假设产生100个标志,先看需要多少个字符串?最小平均长度是多少? 1个字符26个 2个字符26*26=676个 3个字符26×26×26=17576个 所以产设100个标志的平均长度为【26+(100-26)*2】/100=1.74 看样子效率也不是很低的哦^_^ >本人已实现PHP版本的笨拙的函数,感觉做这件事情很好玩,所以将此想法出来,感兴趣的朋友不妨思考下?或许会对你们的工作也有帮助。 > >-- >riverfor's showtime. >riverfor's game > > >------------------------------------------------------------------------ > >_______________________________________________ >python-chinese >Post: send python-chinese at lists.python.cn >Subscribe: send subscribe to python-chinese-request at lists.python.cn >Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn >Detail Info: http://python.cn/mailman/listinfo/python-chinese > -- 中文人工智能讨论组 http://groups.google.com/group/ai-chinese
Zeuux © 2025
京ICP备05028076号