本题目耗时(35min) 由衷的希望大佬们能给予小卓建议和修改哦~~风里雨里 我的心里 期待和大佬们一起学习
本题小卓同学感觉有两个需要注意的地方吧(说白了就是小卓本拙!!!):
第一个就是关于质数的判断 // 这个是个通用知识点哦 我用的是中等的解法 上等的解法说实在 小卓同学现在还不会 doge 希望大佬能指点一二 orz
第二个就是判断什么时候会超出L //这个地方卡我了好久哭~~~ 因为我这道题乍一看好简单,就没想动笔演算,然后直接翻车, 主要是什么时候执行判断是小问题哦
#include <iostream> // 万能开头当然也可以哈 #include <bits/stdc++.h>
#include <cmath>
using namespace std;
int main()
{
int L = 0; // 题目给的量 最多承载量
int sum = 0; //用将判断出来的质数进行求和的量 同时和L进行比较
int number = 0; //统计口袋里能装下几个质数
cin >> L;
if (L >= 1) // 翻译题目所给条件
{
for (int i=2; ;i++) //题目说是从2开始哦
{
int flag = 0; // 进行判断的中间量
for (int j=2; j<=sqrt(i); j++) //此处判断质数
{
if (i%j == 0)
{
flag = 1;
}
}
if (flag == 0)
{
if (L == 1) //对L为1时进行特殊判断 小卓在这里卡了半天doge
{
number = 0;
break;
}
sum += i;
if (sum > L)
{
break;
}
cout << i << endl; //不要忘了输出格式哦
number++;
}
}
}
cout << number;
return 0;
}