(2018-腾讯-在线编程题)
- 题目描述:
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输
入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
[2,3,5,7] - 输入描述:
输入包括一个整数n,(3 ≤ n < 1000) - 输出描述:
输出对数 - 示例1 :
输入:
10
输出:
2
num = int(input('num:'))
def isprime(num): # 定义一个函数,判断是否为质数,num为输入的整数
for i in range(2, num): # 质数大于1
if num % i == 0: # 能整除,有其它因数的说明不是质数
return False
else:
return True
# 给出判断的范围,调用函数,列出所有质数
prime_list = [i for i in range(2, num) if isprime(i)] # 2~num中属于质数的数的一个列表
print(prime_list)
# 判断有多少对质数的和=输入的这个整数
count = 0
# for num1 in prime_list:
# for num2 in prime_list:
# if num1 + num2 == num and num1 <= num2:
# count += 1
for num1 in prime_list:
if (num - num1) in prime_list and num1 <= num - num1:
count += 1
print(count)