40分,求debug

P5736 【深基7.例2】质数筛

有两个错: 忘记特判和应该是<=sprt(b) 9是特列 所以应该是这样 ```c #include<bits/stdc++.h> using namespace std; bool cnt; int main(){ long long a; vector<int> n; cin>>a; for(int i=0;i<a;i++){ int b; cin>>b; if(b<2){ cnt=true; } for(int j=2;j<=sqrt(b);j++){ if(b%j==0){ cnt=true; break; } } if(cnt==false){ n.push_back(b); }else{ cnt=false; } } for(int i=0;i<n.size();i++){ cout<<n[i]<<" "; } return 0; } ```
by zhang15888910064 @ 2023-12-25 19:08:39


(https://www.luogu.com.cn/record/140977700)
by zhang15888910064 @ 2023-12-25 19:41:10


不建议写 sqrt(b) ,double 和 int 类型转换会丢失精度,建议写 ```cpp j * j <= b ``` 跟 sqrt(b) 效果是一样的,但是不容易丢失精度。
by Unqwq_ @ 2024-01-14 16:28:55


|