蓝桥杯训练赛二-1199 问题 E: 哥德巴赫曾猜测

题目描述

德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对

输入

输入任意的>6的正偶数(<32767)

输出

试求给出的偶数可以分解成多少种不同的素数对(注: A+B与B+A认为是相同素数对)

样例输入

1234

样例输出

25

 1 N = 32777
 2 primes = [0 for i in range(N)]
 3 c = 0
 4 isPrime = [True for i in range(N)]
 5 for i in range(2, N):
 6     if isPrime[i]:
 7         primes[c] = i
 8         c += 1
 9     for j in range(c):
10         if primes[j] * i < N:
11             isPrime[i*primes[j]] = False
12         if i % primes[j] == 0:
13             break
14 
15 n = int(input())
16 sum = 0
17 for i in range(c):
18     if primes[i] >= n:
19         break
20     if isPrime[n - primes[i]] and primes[i] <= n - primes[i]:
21         sum += 1
22 
23 print(sum)

 

posted @ 2023-02-26 16:43  QWZeng  阅读(69)  评论(0)    收藏  举报