本文主要是介绍素数口袋(杭电慕课第四章第三题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目内容:
阿福有一个口袋,可以用来装各个素数。他从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;
}
这篇关于素数口袋(杭电慕课第四章第三题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!