【 在 adoal 的大作中提到: 】
: n取m的不重复无序组合,用itertools.conbinations啊。
: 但是依旧不能解决算得慢的问题。
:
python学习任重道远啊,呵呵
熟悉语言基本语法, 只是初级接触
然后, 要习惯现代计算机语言, 向量化编程, 函数式编程, CPU和GPU多核处理,才是走向生产力。
针对你这个小问题,
第一阶段, 解决方案就是废弃循环, 采用向量化处理,使用迭代,切片,向量矩阵替代循环, if else,
迭代处理可以使用itertools, 里面有两个函数专门处理排列组合,
类似于:
from itertools import combinations, permutations
result=[(lambda x,y,z: (x,y,z) if ((x*y*z+1)%x==0 or (x*y*z+1)%y==0 or (x*y*z+1)%z==0) and((x*y*z-1)%x==0 or (x*y*z-1)%y==0 or (x*y*z-1)%z==0) else None)(x,y,z) for x,y,z in combinations([2,3,5,7,11,13,17,19,23,29,31],3)]
print(result)
python的向量化基本可以以详细学习numpy作为入门。
多核方面内容就会很多, 有python御用的库, 这类在大数据处理会有很多介绍。
如果, 灵活性还不够, 需要通过C/C++扩展实现, 毕竟在多核的GPU和CPU高性能计算的库, 基本上都会有C++语言封装的SDK, C++语言在多个操作系统在这个领域支持也一直处于近似统治地位。
--
FROM 115.171.245.*