只有20分,求助/(ㄒoㄒ)/~~

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

@[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


|