素数对猜想

    技术2022-07-11  126

    让我们定义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

    思路:

    输入数字N后,在2~N中寻找素数,并判断相邻差值为2的两个数是否同时为素数。

    当只有一对素数存在时,单独处理。

    注意边界值,采用比较第i个和第i-2个数字,而不采用比较第i个和第i+2个数字,以避免跨边界的素数对也被算进来。

    源代码:

    import math def Input(): N = int(input()) return N def IsPrime(n): if((n == 2)or(n == 3)): return 1 if((n %6 != 1)and(n % 6 != 5)): return 0 for i in range (5, int(math.sqrt(n))+1, 6): if((n%i == 0)or(n%(i+2) == 0)): return 0 return 1 if __name__ == '__main__': p = [] num = 0 N = Input() if(N == 3 or N == 4): print('1',end = '') else: for i in range(4, N+1): if((IsPrime(i) == 1)and(IsPrime(i-2)==1)): num = num + 1 #print(i,' ',i-2) print(num, end = '')

     

    Processed: 0.017, SQL: 9