@[Cuimenghao](/user/1092593)
①`p`函数改为
```cpp
int p(int l){
//i不能从1开始枚举,原因是 i 整除任何数,所以之前的 p 总是返回 1
//只需枚举 2-根号(l) 之间的整数即可
//原因是若 i 整除 l,那么 l/i 整除 l
//若令 i<=l/i,那么得到 i*i<=l,
//由于 i 和 l/i 试除 l 没有本质区别,于是只需要筛根号个数就够用了
//这样会快很多
for(int i=2;i*i<=l;i++){
if(l%i==0){
return 0;//能够除尽,不是质数
}
}
return 1;//经过检验是质数
}
```
②没有记录个数,题目要求最后输出袋子里的质数个数,所以开一个 `int cnt=0;` 在 `cout<<i<<endl;` 的同时 `cnt++;` 循环结束后输出 `cout<<cnt<<endl;`
by Terrible @ 2024-02-04 22:00:29
谢谢大佬
by Cuimenghao @ 2024-02-05 12:13:59