Python_(2018-腾讯-在线编程题)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lm236236/article/details/86673676

- 题目描述:

给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整
数,并输出结果。输
入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别
为(5,5),(3,7))
# [2,3,5,7]

- 输入描述:

输入包括一个整数n,(3 ≤ n < 1000)

- 输出描述:

输出对数
- 示例1 :
```
输入:
    10
输出:
    2

#判断是否为质数
def fun1(num):
    count=0
    for i in range(2,num):
        if num%i==0:
            count += 1
    if count == 0:
        return True
    else:
        return False
#计算满足的质数对的总和
#返回值: 满足的质数对的总和(没有去重)
def fun2(num_in):
    Count = 0
    for i in range(2,num_in):
        for j in range(2,num_in):
            if fun1(i) and fun1(j):
                if i+j==num_in:
                    Count += 1
                else:
                    continue
    return Count
num_in=int(input("请输入一个整数:"))
print(int(fun2(num_in)/2+0.5))   
"""
可能有人会疑惑,为什么最后输出要除以2然后加0.5,再转换为整型数据。
输入以10为例,两对质数应该是(5,5)和(3,7),但是看循环部分不难理解,
(5,5)只会出现一次,但是(3,7)会出现两次,另一次是(7,3)。
所以会出现Count为奇数或者偶数两种情况,如果是奇数,那么最后输出为除以2加1,
如果是偶数,直接除以2即可。‘int(fun2(num_in)/2+0.5)‘这样写可以少一个判断
偶数和奇数的程序,但是结果是一样的。Debug一下会清晰很多
"""

 

展开阅读全文

没有更多推荐了,返回首页