给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
# -*- coding: utf-8 -*- # !/usr/bin/python3 # 解题思路:根据题意,从2到m // 2遍历,确定i和m - 1是否都为素数 # 如果都为素数,保存为一个结果,所有的结果都保存下来,数组的长度就是组合数 def is_prime(n): if n < 2: return False for k in range(2, n): if n % k == 0: return False return True while True: try: m = int(input()) ls = list() for i in range(2, m // 2 + 1): if is_prime(i) and is_prime(m - i): ls.append((i, m - i)) print(len(ls)) except: break
n = int(input()) primes = [2, ] for i in range(3, n): active = True for j in range(2, i): if i % j == 0: active = False break else: continue if active: primes.append(i) pair = 0 for x in primes: if n-x in primes: pair += 1 pair = int(pair/2+0.5) print(pair)菜鸟参考了一下评论大神的代码改的,因为不太会处理数字1,2的j循环部分,干脆把2直接放到初始primes里面了
n=int(input()) ans=[] for i in range(2,n): for j in range(2,n//2+1): if i+j == n: a=[i,j] ans.append(a) count=0 for item in ans: flag2=False flag1=False for i in range(2,item[0]//2+1): if item[0]%i==0 : break else: flag1=True for i in range(2, item[1] // 2 + 1): if item[1]%i==0 : break else: flag2=True if flag1 ==True and flag2 ==True: count += 1 print(count)
from itertools import combinations_with_replacement def sushu(n): if n == 1: return False for i in range(2,n): if n % i == 0: return False return True n = int(input()) Sushuls = list(filter(sushu,[i for i in range(n)])) print(len(list(filter(lambda x:x[0] + x[1] == n,combinations_with_replacement(Sushuls,2)))))
n=int(input()) def _odd_iter(): i = 1 while True: i = i + 2 yield i def _not_divisible(i): return lambda x: x % i > 0 def primes(): yield 2 it = _odd_iter() # 初始序列 while True: i = next(it) # 返回序列的第一个数 yield i it = filter(_not_divisible(i), it) # 构造新序列 numbers=[] for i in primes(): if i < 1000: numbers.append(i) else: break ans=0 for i in numbers: if (n-i) in numbers and i<=(n-i): ans+=1 print(ans)
from math import sqrt
def isPrimeNumber(number):
for i in range(2, int(sqrt(number) + 1)):
if number % i == 0:
return False
return True
def getPrimeNumber(number):
res = []
for i in range(2, number + 1):
if isPrimeNumber(i):
res.append(i)
return res
a = int(input())
res = 0
primes = getPrimeNumber(a)
for i in primes:
if a - i in primes and i < a // 2 + 1:
res += 1
print(res)
import sys def if_prime(num): tmp=0 if num > 1: for i in range(2, num): if (num % i) == 0: tmp=tmp-1 return tmp else: tmp=tmp+1 return tmp else: tmp = tmp - 1 return tmp if __name__ == "__main__": a=int(sys.stdin.readline().strip()) count=0 for i in range(1,int((a/2)+1)): if if_prime(i)+if_prime(a-i)>0: count=count+1 print(count)
import math
def isOk(n):
if n & 1 == 0:
return False
i = 3
n_sqrt = math.sqrt(n)
while i <= n_sqrt:
if n % i == 0:
return False
i += 2
return True
if __name__ == '__main__':
N = int(input())
ans = 0
for i in range(1, N//2+1, 2):
if isOk(i) and isOk(N-i):
ans += 1
print(ans)