输入一个整数
。保证
是偶数。
第一行输出一个整数
,代表满足条件的素数对中的较小者。
第二行输出一个整数
,代表满足条件的素数对中的较大者。
20
7 13
4
2 2
import sys def su(s): for i in range(n//2,n+1): for j in range(2,int(i**0.5)+1): if (i % j == 0)or((n-i) % j) == 0: break else: return i,n-i for n in sys.stdin: n = int(n.strip()) a,b = su(n) print(str(b)+'\n'+str(a))
import sys def func(n): if n <= 1: return False elif n == 2&nbs***bsp;n == 3: return True elif n % 2 == 0: return False else: for i in range(3, n, 2): if n % i == 0 and i**2 <= n: return False return True for line in sys.stdin: num = int(line.strip()) for i in range(num//2, 2, -1): if func(i) and func(num-i): print(i) print(num-i) break
from math import sqrt def is_prime(number): for i in range(2, round(sqrt(number)) + 1): if number % i == 0: return False return True while True: try: even = int(input()) i = j = even >> 1 while i < even - 2: if is_prime(i) and is_prime(j): print(j) print(i) break i += 1 j -= 1 except: break
def check_prime(num): for i in range(2, int(num**1/2)+1): if num % i == 0: return False return True while True: try: even = int(input().strip()) half = even // 2 start = 0 if half % 2 == 1 else 1 for i in range(start, half, 2): a, b = half + i, half - i if check_prime(a) and check_prime(b): print(b) print(a) break except: break(1)选择从中间数开始,一加一减,保证和是输入数的同时,还达到了两个素数差值最小。(2)从奇数中寻找素数,每次跨度为2.
def isPrime(n): for i in range (2, n): if n%i == 0: return False return True #注意位置 while True: try: n = int(input())//2 start = 1 if n%2 == 1: start = 0 for i in range (start, n, 2): a, b = n+i, n-i if isPrime(a) and isPrime(b): print(b) print(a) break else: break except: break
def is_su(n): for i in range(2, n): if n % i == 0: return False else: return True while True: try: n = int(input()) s = list(filter(is_su, [j for j in range(2, n)])) x1, x2 = 0, 0 for k in s: if (n - k) in s and n-k >= k: x1, x2 = k, n-k print(x1) print(x2) except: break
def zhishu(n): number = [] for i in range(2,n): for j in range(2,i): if (i % j) == 0: break else: number.append(i) return number while True: try: n = int(input()) number = zhishu(n) minv=n res=[] for i in number: if n-i in number: minv = min(minv,abs(n-i-i)) if minv == abs(n-i-i): res = [i,n-i] print(res[1]) print(res[0]) except: break
# 素数就是质数,就是除了1和它本身以外不再有其他的因数 # 判断某一个数是不是素数 https://wenku.baidu.com/view/f3d19275b90d6c85ed3ac600.html # 判断一个数是否为素数-函数 def sy(n): if n%2==0: # 如果该数能被2整除,则不是素数 return 0 for x in range(3, int(n**0.5)+1, 2): # 从3开始判断到sqrt(m)+1即可(包括m**0.5的整数部分这个值),步长为2 # 因为一个数开平方后的数是这个数的最大因子,之后的数就不用判断了 if n%x==0: # 如果这个数能被x整除 return 0 return 1 while True: try: lstSS = [1] # 素数表,起码有1 num = int(input()) # 输入一个偶数 # 遍历num,得到小于num的所有素数列表(num是偶数,肯定不是素数,就不遍历到num+1了) for i in range(3, num): # 对应判断函数,从3开始 # 判断i是否为素数 if sy(i): lstSS.append(i) # 遍历素数表,如果有lstSS[i] + lstSS[j] == num则记录 lst2 = [] # 把两素数差值和素数对作为元组加入到列表中 for i in range(len(lstSS)): for j in range(i, len(lstSS)): if lstSS[i] + lstSS[j] == num: lst2.append((lstSS[j]-lstSS[i], str(lstSS[i])+' '+str(lstSS[j]))) lst2.sort(key = lambda i:i[0], reverse=False) s1, s2 = lst2[0][1].split() # 得到两个元素 print(s1) # lstSS[i] print(s2) # lstSS[j] except: break
import math def primesqrt(n): result = list() result.append(2) result.append(3) for i in range(5,n+1,2): for j in range(2,int(math.sqrt(i))+2): if i%j == 0: break else: result.append(i) return result while True: try: N = int(input()) res = [] zhishu_list = primesqrt(N) mindiff = float('inf') for i in zhishu_list: if N-i in zhishu_list: mindiff = min(mindiff,abs(N-i-i)) if mindiff == abs(N-i-i): res = [i,N-i] print(res[1]) print(res[0]) except: break
def isprime(n : int) -> bool: if n%2 == 0: return False elif n%3 == 0: return False elif n%5 == 0: return False for i in range(2,n//5+1,1): if n%i == 0: return False return True while 1: try: N = int(input()) for i in range(N//2,N,1): if isprime(i): if isprime(N-i): print(N-i) print(i) break except: break
可以从中值开始递增获取素数对
def prime(n): i = 2 while i * i <= n: if n % i == 0: return False i += 1 return True while True: try: n = int(input()) s = n // 2 for k in range(s,2,-1): if prime(k): if prime(n-k): print(k) print(n-k) break except: break