务虚心斋 2021-03-31 16:42 采纳率: 100%
浏览 140
已采纳

pta拼题:1007 素数对猜想 (20 分),总是超时

 

 

1007 素数对猜想 (20 分)

让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数。显然有d​1​​=1,且对于n>1有d​n​​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数N(<10​5​​),请计算不超过N的满足猜想的素数对的个数。

输入格式:

输入在一行给出正整数N

输出格式:

在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

题目网址:https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744

import math

def Prime_list(n):
    prime_list =[2]
    for i in range(3,n+1,2):
        for j in prime_list:
            if i%j == 0 :
                break
        else:
            prime_list.append(i)
    return prime_list
    
num=int(input())

prime_list = Prime_list(num)
count = 0
l = len(prime_list)
for n in range(l-1):
    if prime_list[n+1] - prime_list[n] == 2:
        count += 1

print(count)
  • 写回答

3条回答 默认 最新

  • 关注
    import math
    
    def Prime_list(n):
        prime_list = [2]
        for i in range(3,n+1,2):
            k = math.ceil(math.sqrt(i))
            for j in prime_list:
                if i%j == 0:
                    break
                if j>k:
                    prime_list.append(i)
                    break
            else:
                prime_list.append(i)
        return prime_list
    
    num=int(input())
    prime_list = Prime_list(num)
    count = 0
    l = len(prime_list)
    for n in range(l-1):
        if prime_list[n+1] - prime_list[n] == 2:
            count += 1
    print(count)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b