本文已参与「新人创作礼」活动,一起开启掘金创作之路。
题目来自牛客网的华为机试题库,本文题目为简单题们HJ54 表达式求值、HJ60 查找组成一个偶数最接近的两个素数
HJ54 表达式求值
描述
给定一个字符串描述的算术表达式,计算出结果值。输入字符串长度不超过 100 ,合法的字符包括 ”+, -, *, /, (, )” , ”0-9” 。
数据范围:只进行整型运算,确保输入的表达式合法
输入描述:
输入算术表达式
输出描述:
计算出结果值
示例1 输入:400+5 输出:405
eval函数
s = input()
print(int(eval(s)))
解析
看到题的时候完全不知所措,还想过吧常用的计算都列出来,但是查了之后才发现这么简单啊,直接用eval函数就可以了。不知道出题人是不是想让我这么解,但是这样好方便啊
HJ60 查找组成一个偶数最接近的两个素数
描述
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。
输入描述:
输入一个大于2的偶数
输出描述:
从小到大输出两个素数
示例1
输入:
20
输出:
7
13
n = int(input())
re = []
for i in range(2,n):
k = 2
for j in range(2,i):
k += 1
if i % j == 0:
break
if k == i:
re.append(i)
l = n//2
r = n//2
while True:
if l in re and r in re:
break
l -= 1
r += 1
print(l)
print(r)
解析
因为是偶数可以从这个数的1/2开始找,一个数不停变小,另一个不停变大,当两个数都是素数的时候停止,即可得到
具体方法:
1.把2和输入数字之间的所有素数保存在数组里
2.从n//2开始向两侧找,当两个数都在第一步找到的数组里时,停止
3.这两个数就是满足条件的两个素数