题目描述
小 A 有一个质数口袋,里面可以装各个质数。他从 2 2 2 开始,依次判断各个自然数是不是质数,如果是质数就会把这个数字装入口袋。
口袋的负载量就是口袋里的所有数字之和。
但是口袋的承重量有限,装的质数的和不能超过 L L L。给出 L L L,请问口袋里能装下几个质数?将这些质数从小往大输出,然后输出最多能装下的质数的个数,数字之间用换行隔开。
输入格式
一行一个正整数 L L L。
输出格式
将这些质数从小往大输出,然后输出最多能装下的质数个数,所有数字之间有一空行。
1.题目分析
该题主要考查质数的判断方法:对于n,定义一个标记变量为1,
从2开始循环到2的平方根,判断n对i是否为0,
如果能被整除,则标记为0,不是质数,
循环结束返回flag,如果为1的话,就是一个质数。文章来源:https://www.toymoban.com/news/detail-614841.html
2.题目思路
写一个判断质数的函数isPrime(),从2开始到L遍历,先判断是否为质数,
如果是质数则累加为sum,再判断是否超过口袋容量L,
超过则直接break,反之则打印换行,最后计数器加一(用于记录口袋容量)。文章来源地址https://www.toymoban.com/news/detail-614841.html
3.代码演示
#include <stdio.h>
#include <math.h>
//判断是否为质数
int isPrime(int n) {
int flag = 1;
for (int i = 2; i <= sqrt(n); ++i) {
if (n % i == 0) {
flag = 0;
}
}
return flag;
}
int main() {
int l;
int sum = 0;
int count = 0;
scanf("%d", &l);
for (int i = 2; i < l; ++i) {
//先判断质数
if (isPrime(i) == 1) {
//累加
sum += i;
//判断口袋容量
if (sum > l){
break;
}
//打印
printf("%d\n", i);
//记录容量
count++;
}
}
//打印个数
printf("%d\n",count);
return 0;
}
到了这里,关于P5723 【深基4.例13】质数口袋的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!