@[m3o7o2n1](/user/1279238) 我发现你问题了,等我调试下
by __Rickysun__ @ 2024-02-06 16:57:21
@[m3o7o2n1](/user/1279238) OK了,你的问题就是如果超了的话,就会多输出一个(由于样例很凑巧,都是刚刚好满足,所以你样例过了) **AC代码如下:**
~~我知道你只看这里~~
别忘了看注释,最重要的是搞懂
```cpp
#include <bits/stdc++.h>
//万能头了解一下,不用导入其他的头文件了
using namespace std;
int main() {
int i = 2, sum = 0, n, j, b, m = 0;//初始赋值
scanf("%d", &n);//读入数据
while (1) {//这里帮你改成while循环更简洁
b = 0;//目标值清0
for (j = 2; j <= sqrt(i); j++) {
//sqrt是取平方根,根据数论,这样更简洁
//另外建议你以后写个函数判断质数
if (i % j == 0 && j != 1) b = 1;//判断是否为质数
}
if (!b) {//感叹号可以取反
//0是false,1是true
//这样可以把true变成false,false变成true
if (sum + i <= n) {//应该在这里判断,不然会多输出一个
sum = sum + i;//加上值
printf("%d\n", i);//输出
m++;//增加数量
} else break;//如果超过n,直接跳出
}
i++;//增值
}
printf("%d", m);//输出
return 0;//圆满结束!
}
```
by __Rickysun__ @ 2024-02-06 17:11:27
@[Rickysun](/user/824205) 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊万分感谢orz!好详细的注释,这使我眼泪旋转(;´༎ຶД༎ຶ`),爱来自网络。
by m3o7o2n1 @ 2024-02-06 18:28:23