Py写的解题,不知道错在哪里,请高手指点

P1304 哥德巴赫猜想

要求`a+b`从小到大输出,最后的循环这么改就可以了(?): ```python for ab in y: for a in x: if ab-a in x: print(ab,"=",a,"+",ab-a) ```
by xkcdjerry @ 2021-04-16 23:33:27


# 90分了,还是有点问题,速度慢了 ```python n,x,y,c=int(input()),[],[],0 for i in range(2,n+1): for j in range(2,i): if i%j==0: break else: x.append(i) for i in range(4,n+1): if i%2==0: y.append(i) for i in y: c=0 for a in x: for b in x: if i==a+b: print(i,"=",a,"+",b,sep="") c+=1 if c>0: break if c>0: break ```
by chris1988 @ 2021-04-16 23:45:43


# 更新了一下代码 ```python n,x,y,c=int(input()),[],[],0 for i in range(2,n+1): for j in range(2,int(i**0.5)+1): if i%j==0: break else: x.append(i) for i in range(4,n+1,2): y.append(i) for i in y: c=0 for a in x: for b in x: if i==a+b: print(i,"=",a,"+",b,sep="") c+=1 if c>0: break ```
by chris1988 @ 2021-04-17 00:13:38


@[chris1988](/user/461877) 三重循环了。过于冗杂,加上python运行时间本来就慢 可能就超时了
by wykun1234 @ 2021-09-01 09:44:24


```python n = int(input()) def func(x): flag = 1 if x == 2: flag = 1 else: for j in range(2, int(x/2+1)): if x % j == 0: flag = 0 break return flag arr = [] for i in range(2, n+1): if func(i) == 1: arr.append(i) for i in range(4, n+1, 2): for m in arr: if func(i - m) == 1: print("{}={}+{}".format(i, m, i-m)) break ``` 思路一样,微调下少了一重循环
by wykun1234 @ 2021-09-01 09:46:38


```python n,x,y,c=int(input()),[],[],0 for i in range(2,n+1): for j in range(2,int(i**0.5)+1): if i%j==0: break else: x.append(i) for i in range(4,n+1,2): y.append(i) for i in y: c=0 for a in x: for b in x: if i==a+b: print(i,"=",a,"+",b,sep="") c+=1 if c>0: break ``` # ac代码
by tlm1587201497 @ 2021-10-06 09:01:18


@[tlm1587201497](/user/494226) tle了
by ccecust @ 2022-02-17 12:51:00


|