请教各位,计算机编程 Python

请教各位,计算机编程Python第10题,请教... 请教各位,计算机编程 Python第10题,请教 展开
 我来答
百度网友87b2a52
2018-04-24 · 知道合伙人软件行家
百度网友87b2a52
知道合伙人软件行家
采纳数:523 获赞数:3490
毕业于南京大学,硕士学位。10年软件研发经验。现任信息系统架构师。

向TA提问 私信TA
展开全部
import mathimport timefrom  multiprocessing import cpu_countfrom multiprocessing import Pool# 判断数字是否为质数def isPrime(n):    if n <= 1:        return False    for i in range(2, int(math.sqrt(n)) + 1):        if n % i == 0:            return False    return True# 验证大于2的偶数可以分解为两个质数之合# T为元组,表示需要计算的数字区间def GDBH(T):
    S = T[0]
    E = T[1]    if S < 4:
        S = 4    if S % 2 == 1:
        S += 1    for i in range(S, E + 1, 2):
        isGDBH = False        for j in range(i // 2 + 1): # 表示成两个质数的和,其中一个质数不大于1/2            if isPrime(j):
                k = i - j                if isPrime(k):
                    isGDBH = True                    if i % 100000 == 0:  # 每隔10万个数打印一次                        print('%d=%d+%d' % (i, j, k))                    # print('%d=%d+%d' % (i, j, k))                    break        if not isGDBH:  # 打印这句话表示算法失败 或是猜想失败(怎么可能...)            print('哥德巴赫猜想失败!!')            break# 对整个数字空间N进行 分段CPU_COUNTdef seprateNum(N, CPU_COUNT):
    list = [[i + 1, i + N // 8] for i in range(4, N, N // 8)]
    list[0][0] = 4    if list[CPU_COUNT - 1][1] > N:
        list[CPU_COUNT - 1][1] = N    return listif __name__ == '__main__':
    N = 10 ** 6    # 多进程    time1 = time.clock()
    CPU_COUNT = cpu_count()  ##CPU内核数 本机为8    pool = Pool(CPU_COUNT)
    sepList = seprateNum(N, CPU_COUNT)

    result = pool.map(GDBH, sepList)
    pool.close()
    pool.join()    print('多线程耗时:%d s' % (time.clock() - time1))    # 单线程    time2 = time.clock()
    GDBH((4, N))    print('单线程耗时:%d s' % (time.clock() - time2))
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式