python直接WA了三个点,球球dalao看看,谢谢

P5723 【深基4.例13】质数口袋

@[qianyan_](/user/339332) 为啥`print(ans)`
by ADay @ 2020-04-22 21:23:10


@[qianyan_](/user/339332) 原来的代码如果$s \ge L$就会多输出一个 ```python L=int(input()) s=0 ans=[] if L<=1: print(0) else: for i in range(2,100000): if s>=L: break else: for j in range(2,i): if i%j==0: break else: if s+i<=L: ans.append(i) s+=i else: break for num in ans: print(num) print(len(ans)) ``` 就好了
by ADay @ 2020-04-22 21:28:50


$s> L$
by ADay @ 2020-04-22 21:29:12


写错了
by ADay @ 2020-04-22 21:29:19


```python L=int(input()) s=0 ans=[] if L<=1: print(0) else: while True: for i in range(2,100000): if s>=L: break else: for j in range(2,i): if (i%j==0): break else: ans.append(i) s+=i break for num in ans: print(num) print(len(ans)) ``` @[ADay](/user/312393) 不好意思哈,debug的时候加的,忘删了,是这个
by qianyan_ @ 2020-04-22 21:35:21


@[qianyan_](/user/339332) 原来的代码如果$s>L$就会多输出一个 改成这样: ```python L=int(input()) s=0 ans=[] if L<=1: print(0) else: for i in range(2,100000): if s>=L: break else: for j in range(2,i): if i%j==0: break else: if s+i<=L: ans.append(i) s+=i else: break for num in ans: print(num) print(len(ans)) ```
by ADay @ 2020-04-22 21:38:14


@[ADay](/user/312393) 可是改成大于样例就过不去,就是原代码试了好多个都是可以,边界也特判了,找不出来bug
by qianyan_ @ 2020-04-22 21:39:50


@[qianyan_](/user/339332) 不是改成大于,是在每次`s+=i`时判断
by ADay @ 2020-04-22 21:40:52


@[ADay](/user/312393) 哇哦,懂了,谢谢谢谢!
by qianyan_ @ 2020-04-22 21:46:08


|