蓝桥杯准备 【入门3】循环结构

素数小算法(埃氏筛&&欧拉筛)

以下四段代码都是求20以内的所有素数

1.0版求素数
#include<iostream>
using namespace std;

int main() {
    int n = 20;
	for(int i=2;i<=n;i++)
	{
	    int j=0;
	    for(j=2;j<=i;j++)//遍历i
	    {
			if(i%j==0)
			{
				break;
			}
		}
		if(i==j)
		{
			cout<<i<<endl;
		}
	}
    return 0;
}
2.0版(最爱的一版)

任何合数是两个数相乘得的,很明显,其中一个数必小于等于sqrt(合数),所以我们在上一段代码的基础上,只遍历2-sqrt(该数)即可

#include<iostream>
using namespace std;

int main() {
    int n = 20;
	for(int i=2;i<=n;i++)
	{
	    int j=0;
	    for(j=2;j*j<=i;j++)//遍历一部分
	    {
			if(i%j==0)
			{
				break;
			}
		}
		if(j*j>i)
		{
			cout<<i<<endl;
		}
	}
    return 0;
}
3.0版(埃氏筛)

就这样把质数的倍数,一点点false掉

#include<iostream>
using namespace std;
int main()
{
	int n=20;
	bool isprime[n+1];
	for(int i=0;i<n+1;i++)
	{
		isprime[i]=true;
	}
	isprime[0]=false;isprime[1]=false;
	for(int i=2;i<n+1;i++)
	{
		if(isprime[i])
		{
			for(int j=i*i;j<n+1;j+=i)
			{
				isprime[j]=false;
			}	
		}	
	}
	for(int i=0;i<n+1;i++)
	{
		if(isprime[i])
		{
			cout<<i<<endl;
		}
	}
	return 0;
}
4.0版(欧拉筛)

跟上一个埃氏筛,不会重复,也是一点点false掉筛去

#include<iostream>
using namespace std;

int main() {
    int n = 20;
    bool isprime[n + 1];
    int primes[n + 1];  
   
    for (int i = 0; i <= n; i++) {
        isprime[i] = true;
    }
    isprime[0] = false;isprime[1] = false;

    int prime_count = 0;  

    for (int i = 2; i <= n; i++) {
        if (isprime[i]) {
            primes[prime_count] = i;  
			prime_count++;
        }

        for (int j = 0; j < prime_count && primes[j] <= n / i ; j++) {
            isprime[primes[j] * i] = false;

            if (i % primes[j] == 0) {
                break;
            }
        }
    }

    for (int i = 2; i <= n; i++) {
        if (isprime[i]) {
            cout << i << endl;
        }
    }

    return 0;
}

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

题目描述

小 A 有一个质数口袋,里面可以装各个质数。他从 22 开始,依次判断各个自然数是不是质数,如果是质数就会把这个数字装入口袋。

口袋的负载量就是口袋里的所有数字之和。

但是口袋的承重量有限,装的质数的和不能超过 LL。给出 LL,请问口袋里能装下几个质数?将这些质数从小往大输出,然后输出最多能装下的质数的个数,数字之间用换行隔开。

代码

注意特殊点1和0

解法一

#include<iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	int sum=0;
	int prime[10000]={0};
	int c=0;
	for(int i=2;i<=100000;i++)
	{
		int j=0;
		for(j=2;j*j<=i;j++)
		{
			if(i%j==0)
			{
				break;
			}
		}
		if(j*j>i)
		{
			prime[c++]=i;
		}
	}
	int count=0;
	if(n>=2)
	{
		for(int i=0;i<c-1;i++)
		{
			cout<<prime[i]<<endl;
			sum+=prime[i];
			count++;
			if(sum+prime[i+1]>n)
			{
				break;
			}
		}
	}
	cout<<count<<endl;
}

解法二

#埃氏筛
#include<iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	int sum=0;
	int prime[10000]={0};//储存素数
	bool isprime[100000];//判断素数

	for(int i=0;i<100000;i++)//全部置true
	{
		isprime[i]=true;
	}
	int c=0;
	isprime[0]=false;isprime[1]=false;//注意 0 1不是素数
	for(int i=2;i<=100000;i++)//开始筛选
	{
		if(isprime[i])
		{
			prime[c++]=i;
			for(long long j=(long long)i*i;j<100000;j+=i)
			{
				isprime[j]=false;//合数置假
			}
		}
	}
	int count=0;//计数
	if(n>=2)//注意n等于0 1 时应该输出0
	{
		
		for(int i=0;i<c-1;i++)
		{
			cout<<prime[i]<<endl;//输出
			sum+=prime[i];
			count++;
			if(sum+prime[i+1]>n)
			{
				break;
			}
		}
	}
	cout<<count<<endl;//输出
}

解法三

#欧拉筛
#include<iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	int sum=0;
	int prime[10000]={0};
	bool isprime[100001];
	for(int i=0;i<=100000;i++)
	{
		isprime[i]=true;
	}
	int c=0;
	isprime[0]=false;isprime[1]=false;
	for(int i=2;i<=100000;i++)//筛
	{
		if(isprime[i])
		{
			prime[c++]=i;
		}
		for(int j=0; j < c && prime[j] <= 100000 / i;j++)
		{
			isprime[prime[j]*i]=false;
			if(i%prime[j]==0)
			{
				break;
			}
		}
	}
	int count=0;
	if(n>=2)
	{
		for(int i=0;i<c-1;i++)
		{
			cout<<prime[i]<<endl;
			sum+=prime[i];
			count++;
			if(sum+prime[i+1]>n)
			{
				break;
			}
		}
	}
	cout<<count<<endl;
}

P1217 [USACO1.5] 回文质数 Prime Palindromes

题目描述

因为 151151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151151 是回文质数。

写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)[a,b](5≤a<b≤100,000,000)(一亿)间的所有回文质数。

代码

#include<iostream>
using namespace std;
int main(){
	int n,m;
	cin>>n>>m;
	int a[10]={0}; //数组储存每位数
	for(int i=n;i<=m;i++)
	{
		bool hui=true;//注意在此位置初始化hui为true
		int x=i;
		int c=0;
		while(x>0)
		{
			a[c++]=x%10;
			x=x/10;
		}
		for(int j=0;j<=c/2;j++)//判断是否是回文数
		{
			if(a[j]!=a[c-j-1])
			{
				hui=false;
				break;
			}
		}
		if(hui)//在回文的条件下判断是否是质数
		{	
			int j=2;
			for(j=2;j*j<=i;j++)
			{
				if(i%j==0)
				{
					break;
				}
			}
			if(j*j>i)
			{
				cout<<i<<endl;//输出
			}
		}
	}
}

P1423 小玉在游泳

题目描述

小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游 22 米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的 98%98%。现在小玉想知道,如果要游到距离 ss 米的地方,她需要游多少步呢。请你编程解决这个问题。

代码

普通方法

(窝感觉是暴力解法,hhh)

 #include<iostream>
 using namespace std;
 int main()
 {
 	double n;
 	cin>>n;
 	double s=2.0;
 	double sum=2.0;
	if(n<=2)//特判
	{
		cout<<"1"<<endl;
	}
	else if(n>2&&n<=100)
	{
	 	for(int i=2;i<=2000;i++)//从第二步开始算
	 	{
		 	s=s*0.98;
		 	sum+=s;
		 	if(sum>=n)
		 	{
			 	cout<<i<<endl;
			 	break;
			 }

		 }
	}
 }
数学方法

 #include<iostream>
 #include<cmath>
 using namespace std;
 int main()
 {
 	double n;
 	cin>>n;
 	double a=2.0;
 	double sum=2.0;
	if(n<=2)
	{
		cout<<"1"<<endl;
	}
	else if(n>2&&n<=100)
	{
		int x=ceil(log(1-1.0*(n*(1-0.98))/a)/log(0.98));//计算x
	 	for(int i=2;i<=x;i++)
	 	{
		 	a=a*0.98;
		 	sum+=a;
		 	if(sum>=n)
		 	{
			 	cout<<i<<endl;
			 	break;
			 }

		 }
	}
 }

P1420 最长连号

题目描述

输入长度为 nn 的一个正整数序列,要求输出序列中最长连号的长度。

连号指在序列中,从小到大的连续自然数。

 #include<iostream>
 #include<cmath>
 using namespace std;
 int main()
 {
 	int n;
 	cin>>n;
 	int a[n]={0};
	cin>>a[0];
	int f=a[0];
	int count=0;int b=0;
 	for(int i=1;i<n;i++)
 	{
	 	cin>>a[i];
	 	//判断是否连号
	 	if(f==a[i]-1)
	 	{
		 	count++;
		}
		else//否,次数置零
		{
			count=0;
		}
		//比较连号长度
		if(count>=b)
		{
			b=count;
		}	
		f=a[i];//重置f
	 }
	 b++;//count++表示第一个数后面连号的次数,最后要加上第一个数
	 cout<<b<<endl;//输出
 }

P1089 [NOIP 2004 提高组] 津津的储蓄计划

题目描述

津津的零花钱一直都是自己管理。每个月的月初妈妈给津津 300300 元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。

为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上 20%20% 还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于 100100 元或恰好 100100 元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。

例如 1111月初津津手中还有 8383 元,妈妈给了津津 300300 元。津津预计1111月的花销是 180180 元,那么她就会在妈妈那里存 200200 元,自己留下 183183 元。到了 1111 月月末,津津手中会剩下 33 元钱。

津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。

现在请你根据 20042004 年 11 月到 1212 月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到 20042004 年年末,妈妈将津津平常存的钱加上 20%20% 还给津津之后,津津手中会有多少钱。

代码

 #include<iostream>
 using namespace std;
 int main()
 {
 	int a[12]={0};
	for(int i=0;i<12;i++)
	{
		cin>>a[i];
	}
	int b=0;
	int sum=0;
	bool flag =true;
	for(int i=0;i<12;i++)
	{
		int c=3;//整百数量
		for(int j=1;j<=3;j++)//计算当月剩整百的数量及这个月总钱
		{
			if(sum<a[i])
			{
				sum+=100;
				c--;
			}
			else
			{
				break;
			}
		}
		sum=sum-a[i];//当月月余
		if(sum<0)//判断是否有月余
		{
			cout<<'-'<<i+1<<endl;
			flag=false;
			break;
		}
		else
		{
			b+=c;//整百数累加
		}
	}
	if(flag)//输出总钱
	{
		cout<<b*120+sum<<endl;
	}
	return 0;
 }

小总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/965866.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

寒假2.6--SQL注入之布尔盲注

知识点 原理&#xff1a;通过发送不同的SQL查询来观察应用程序的响应&#xff0c;进而判断查询的真假&#xff0c;并逐步推断出有用的信息 适用情况&#xff1a;一个界面存在注入&#xff0c;但是没有显示位&#xff0c;没有SQL语句执行错误信息&#xff0c;通常用于在无法直接…

Servlet笔记(下)

HttpServletRequest对象相关API 获取请求行信息相关(方式,请求的url,协议及版本) | API | 功能解释 | | ----------------------------- | ------------------------------ | | StringBuffer getRequestURL(); | 获取客户端…

QQ自动发送消息

QQ自动发送消息 python包导入 import time import pandas as pd import pyautogui import pyperclip图像识别函数封装 本程序使用pyautogui模块控制鼠标和键盘来实现QQ自动发送消息&#xff0c;因此必须得到需要点击位置的坐标&#xff08;当然也可以在程序中将位置写死&…

5.1计算机网络基本知识

5.1.1计算机网络概述 目前&#xff0c;三网融合(电信网络、有线电视网络和计算机网络)和宽带化是网络技术的发展的大方向&#xff0c;其应用广泛&#xff0c;遍及智能交通、环境保护、政府工作、公共安全、平安家居等多个领域&#xff0c;其中发展最快的并起到核心作用的则是计…

51单片机之冯·诺依曼结构

一、概述 8051系列单片机将作为控制应用最基本的内容集成在一个硅片上&#xff0c;其内部结构如图4-1所示。作为单一芯片的计算机&#xff0c;它的内部结构与一台计算机的主机非常相似。其中微处理器相当于计算机中的CPU&#xff0c;由运算器和控制器两个部分构成&#xff1b;…

13.PPT:诺贝尔奖【28】

目录 NO1234 NO567 NO8/9/10 NO11/12 NO1234 设计→变体→字体→自定义字体 SmartArt超链接新增加节 NO567 版式删除图片中的白色背景&#xff1a;选中图片→格式→删除背景→拖拉整个图片→保留更改插入→图表→散点图 &#xff1a;图表图例、网格线、坐标轴和图表标题…

RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)

#作者&#xff1a;闫乾苓 文章目录 RabbitMQ简介RabbitMQ与VMware的关系架构工作流程RabbitMQ 队列工作模式及适用场景简单队列模式&#xff08;Simple Queue&#xff09;工作队列模式&#xff08;Work Queue&#xff09;发布/订阅模式&#xff08;Publish/Subscribe&#xff…

DFX(Design for eXcellence)架构设计全解析:理论、实战、案例与面试指南*

一、什么是 DFX &#xff1f;为什么重要&#xff1f; DFX&#xff08;Design for eXcellence&#xff0c;卓越设计&#xff09;是一种面向产品全生命周期的设计理念&#xff0c;旨在确保产品在设计阶段就具备**良好的制造性&#xff08;DFM&#xff09;、可测试性&#xff08;…

【Elasticsearch】diversified sampler

作用就是聚合前的采样&#xff0c;主要是采样 它就是用来采样的&#xff0c;采完样后在进行聚合操作 random_sampler和diversified_sampler是 Elasticsearch 中用于聚合查询的两种采样方法&#xff0c;它们的主要区别如下&#xff1a; 采样方式 • random_sampler&#xff1a…

2月7号.

二叉树是一种特殊的树形数据结构&#xff0c;具有以下特点&#xff1a; 基本定义 节点的度&#xff1a;二叉树中每个节点最多有两个子节点&#xff0c;分别称为左子节点和右子节点。 子树的顺序性&#xff1a;二叉树的子树有左右之分&#xff0c;且顺序不能颠倒。 递归定义&…

openpnp2.2 - 环境搭建 - 编译 + 调试 + 打包

文章目录 openpnp2.2 - 环境搭建 - 编译 调试 打包概述笔记前置任务克隆代码库切到最新的tag清理干净编译工程关掉旧工程打开已经克隆好的openpnp2.2工程将IDEA的SDK配置为openjdk23 切换中英文UI设置JAVA编译器 构建工程跑测试用例单步调试下断点导出工程的JAR包安装install…

【复现论文】DAVE

网站&#xff1a; GitHub - jerpelhan/DAVE 下载完以后&#xff0c;阅读 readme文件 新建终端&#xff0c;打印文件树&#xff0c;不包含隐藏文件&#xff1a; 命令&#xff1a;tree -I .* . ├── LICENSE ├── README.md ├── demo.py ├── demo_zero.py ├── mai…

GB/T28181 开源日记[8]:国标开发速知速会

服务端源代码 github.com/gowvp/gb28181 前端源代码 github.com/gowvp/gb28181_web 介绍 go wvp 是 Go 语言实现的开源 GB28181 解决方案&#xff0c;基于GB28181-2022标准实现的网络视频平台&#xff0c;支持 rtmp/rtsp&#xff0c;客户端支持网页版本和安卓 App。支持rts…

完美解决phpstudy安装后mysql无法启动

phpstudy数据库无法启动有以下几个原因。 **一、**自己在电脑上安装了MySQL数据库,MySQL的服务名为MySQL,这会与phpstudy的数据库的服务名发生冲突&#xff0c;从而造成phpstudy中的数据库无法启动&#xff0c;这时我们只需要将自己安装的MySQL的服务名改掉就行。 但是&#…

grafana面板配置opentsdb

新增面板&#xff1a; 这里add-panel: 如果不是想新增面板而是想新增一行条目&#xff0c;则点击convert to row: 在新增的面板这里可以看到选择数据源 Aggregator&#xff1a;聚合条件&#xff0c;区分下第一行和第二行的aggregator&#xff0c;第一个是对指标值的聚合&…

论文翻译学习:《DeepSeek-R1: 通过强化学习激励大型语言模型的推理能力》

摘要 我们介绍了我们的第一代推理模型 DeepSeek-R1-Zero 和 DeepSeek-R1。DeepSeek-R1-Zero 是一个通过大规模强化学习&#xff08;RL&#xff09;训练的模型&#xff0c;没有经过监督微调&#xff08;SFT&#xff09;作为初步步骤&#xff0c;展示了卓越的推理能力。通过强化…

【Uniapp-Vue3】从uniCloud中获取数据

需要先获取数据库对象&#xff1a; let db uniCloud.database(); 获取数据库中数据的方法&#xff1a; db.collection("数据表名称").get(); 所以就可以得到下面的这个模板&#xff1a; let 函数名 async () > { let res await db.collection("数据表名称…

【自然语言处理】TextRank 算法提取关键词(Python实现)

文章目录 前言PageRank 实现TextRank 简单版源码实现jieba工具包实现TextRank 前言 TextRank 算法是一种基于图的排序算法&#xff0c;主要用于文本处理中的关键词提取和文本摘要。它基于图中节点之间的关系来评估节点的重要性&#xff0c;类似于 Google 的 PageRank 算法。Tex…

免费windows pdf编辑工具

Epdf&#xff08;完全免费&#xff09; 作者&#xff1a;不染心 时间&#xff1a;2025/2/6 Github: https://github.com/dog-tired/Epdf Epdf Epdf 是一款使用 Rust 编写的 PDF 编辑器&#xff0c;目前仍在开发中。它提供了一系列实用的命令行选项&#xff0c;方便用户对 PDF …

星闪开发入门级教程之安装编译器与小项目烧录

系列文章目录 星闪开发入门级教程 好久不见&#xff0c;已经好几年没有发文章了&#xff0c;星闪-作为中国原生的新一代近距离无线联接技术品牌。我想着写点东西。为了适合新手&#xff0c;绝对小白文。 文章目录 系列文章目录前言一、Hispark Studio1.安装Hispark Studio2.安…