解题思路:
将问题差分成先求1~n的所有素数 再累加素数判断是否符合题意
注意事项:
首先眼光不能局限在本题目10**4案例上,当然时间复杂度N**2也可以写出来,希望大家可以将算法完善.
关于求解一个数是不是素数是有一套模板的(自己写的哈哈哈哈) 大家可以直接套用 比赛时减少时间
参考代码:
from math import *
# 求素数的模板直接套用 根据返回的列表是1和它本身就是素数
def func1(m):
list1=[]
for i in range(1,int(sqrt(m))+2):#减少查找 后面有整除不需要全部都检索(+2是因为确保所有数都可以记录当然你可以+3+4都可以啦)
if m%i==0:
aa=m//i#添加因数
list1.append(aa)
list1.append(i)
list2=list(set(list1))
list2.sort()
return list2
even=eval(input())
list4=[]#存放所有素数
for w in range(2,even+1):#1不是素数 从2开始
if func1(w)==[1,w]:# 判断是不是素数
list4.append(w)
#方法 时间复杂度n
result1=0#累加答案
for x in range(len(list4)):
y=even-list4[x]#满足条件的数
if y in list4:#判断有没有
if list4[x]<=y:# 更要判断是否重复出现 原来的数组是从小到大排列 小+大合理 但是大+小就重复了 你们觉得呢
result1+=1
else:
break#一旦出现重复是不是就可以判断 后面都是重复的数了 直接跳出循环 减少时间
print(result1)
0.0分
4 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:701 |
【蟠桃记】 (C语言代码)浏览:1084 |
蚂蚁感冒 (C语言代码)浏览:1408 |
简单的a+b (C语言代码)浏览:574 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:721 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:748 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:680 |
C二级辅导-阶乘数列 (C语言代码)浏览:671 |
C语言程序设计教程(第三版)课后习题4.9 (Java代码)浏览:630 |
C语言训练-自由落体问题 (C语言代码)浏览:637 |