问题描述

  差为2的两个素数被称为孪生素数对,例如3和5, 11和13.
  给定一个区间,请输出区间内所有的孪生素数对.


输入格式

  两个正整数a,b,其中a<b,

输出格式

  区间[a,b]内的所有孪生素数对,按从小到大顺序。每行一个素数对,其中小的在前,大的在后,以空格分开。
  如果区间内没有素数对的话,输出-1.

以空格分开

思路:孪生素数是指若a为素数,且a+2也是素数,则素数a和a+2称为孪生素数。先判断n是否为素数,再判断n+2是否为素数,如果n和n+2同时为素数,则(n,n+2)就是一对孪生素数,将其打印输出即可。

a, b = map(int, input().split())
s = []
z=[]
for n in range(a, b + 1):
    for i in range(2, n):
        if n % i == 0:
            break
    else:  # 注意这里在循环里面的缩进
        if n != 1:  # 避免a=1时把1也加入列表
            s.append(n)
for i in s:
    if i + 2 in s:
        print(i,i+2)
    if i+2 not in s:
            z.append(i)
            if s==z:
                print(-1)

但是用for循环到后面大数会运行会超时,以后会了再来改善。