题目内容:
阿福有一个口袋,可以用来装各个素数。他从2开始,依次判断各个自然数是不是素数,如果是素数就把这个数字装入口袋。口袋的承载量就是包里所有数字之和,但口袋的承载量有限。假设口袋的承载量是L,表示只能装得下总和不超过L的素数。现给出一个正整数L,请问口袋里能装下几个素数?将这些素数从小到大输出,再输出最多能装下的素数个数。
输入格式:
输入一个正整数L(2<=L<=10000),表示最大承载量。
输出格式:
输出包括两行,第一行从小到大输出能装下的所有素数,数与数之间用空格隔开(注意:行末无空格)。
第二行输出"count = 素数个数"。
输入样例:
100
输出样例:
2 3 5 7 11 13 17 19 23
count = 9
时间限制:500ms内存限制:32000kb
#include<stdio.h>
#include<math.h>
int main()
{
int n, count=1, m=3, sum=2;
int i;
scanf("%d", &n);
printf("2");
if (n>=5)
{
do {
for (i = 2; i < m; i++)
if (m % i == 0)break;
if (i == m) {
sum += m;
if(sum<=n){
printf(" ");
printf("%d",m);
count += 1;
}
}
if (sum-m<=n&&sum>n) {
break;
}
else {
m++;
}
} while (m != 0);
}
printf("\n");
printf("count = %d", count);
return 0;
}