洛谷P5736 【深基7.例2】质数筛 C语言/C++

news2024/11/26 16:54:30

【深基7.例2】质数筛

题目描述

输入 n n n 个不大于 1 0 5 10^5 105 的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。

输入格式

第一行输入一个正整数 n n n,表示整数个数。

第二行输入 n n n 个正整数 a i a_i ai,以空格隔开。

输出格式

输出一行,依次输出 a i a_i ai 中剩余的质数,以空格隔开。

样例 #1

样例输入 #1

5
3 4 5 6 7

样例输出 #1

3 5 7

提示

数据保证, 1 ≤ n ≤ 100 1\le n\le100 1n100 1 ≤ a i ≤ 1 0 5 1 \leq a_i \leq 10^5 1ai105

所需变量

int a[100005];//用来存储所有的数

int n;//用来输入到底有多少个数

int i;//循环变量

int control;//用来控制是否是该输出的第一个数

思路:我们首先写一个判断是否是质数的方法,如果是质数返回1,不是质数返回0:

int solution(int a){
    if(a<2){
        return 0;
    }
    for(int i = 2;i<=(a/2);i++){
        if(a%i == 0){
            return 0;
        }
    }
    return 1;
}

当然啦,对于这个题目我们考虑到会超时所以将判断指数的函数方法进行改进,改进后的代码如下:

int solution(int a){
    if(a<2){
        return 0;
    }
    if((a == 2)||(a == 3)||(a == 5)){
       return 1; 
    }
    if((a%2 == 0)||(a%3 == 0)||(a%5 == 0)){
        return 0;
    }
    for(int i = 2;i<=(a/2);i++){
        if(a%i == 0){
            return 0;
        }
    }
    return 1;
}

当我们知道如何去判断一个数是否是质数之后,我们需要做的是就是将每个数送进去判断一下,这里就要考虑到当每次输入一个数的时候我们就能判断,当不是质数,那我们就不做“任何处理”,直接跳过!
所以当所有的思路转成代码时,代码如下(编译器是dev,语言是C语言):
该算法本人认为比较优,如果有更好的想法,欢迎q我!

#include<iostream>
using namespace std;
int solution(int a){
    if(a<2){
        return 0;
    }
    if((a == 2)||(a == 3)||(a == 5)){
       return 1; 
    }
    if((a%2 == 0)||(a%3 == 0)||(a%5 == 0)){
        return 0;
    }
    for(int i = 2;i<=(a/2);i++){
        if(a%i == 0){
            return 0;
        }
    }
    return 1;
}
int main(){
    int a[100005],n,i,control = 0;
    cin>>n;
    for(i = 0;i<n;i++){
        cin>>a[i];
    }
    for(i = 0;i<n;i++){
        if(solution(a[i])){
            if(control == 0){
                control = 1;
                cout<<a[i];
            }else{
                cout<<" "<<a[i];
            }
        }
    }
    cout<<endl;
    return 0;
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 esp-idf SDK ,如何在 .cpp 工程中加入.c 的文件调用?

把外部 .c 文件放到 .cpp 工程下的 main 文件夹然后在 .cpp 工程下声明 .c 文件下的 hello_main 函数同时在 cpp 工程的 CmakeLists.txt 文件下加上 .c 文件最后在 .cpp 工程下调用 hello_main 函数即可 可基于 esp-idf/examples/storage/nvs_rw_value_cxx 例程来测试 &#x…

mysql 8.0.32安装 windows server 超详细

官网下载mysql包&#xff0c;官网地址(中文版)&#xff1a; http://mysql.p2hp.com/cloud/index.html 我是下载的这个(第一个) 内容解压后是这样的&#xff0c;其实windows版本无需安装&#xff0c;只需要配置后启动即可 同时&#xff0c;建议下载下这个Visual Studio&#xf…

Nebula测试

LDBC benchmark 这是官方文档 https://ldbcouncil.org/ldbc_snb_docs/ldbc-snb-specification.pdf 主要有几点 Scale Factors 是生成数据的一个大小&#xff0c;For both workloads, the SF1 data set is 1 GiB, the SF100 is 100 GiB, and the SF10 000 data set is 10 000 G…

关于CSS的简单知识

CSS是什么首先&#xff0c;在之前的html仅仅是写了一个框架&#xff0c;页面并不工整&#xff0c;美观。而CSS正是解决了这一问题。HTML仅仅只是表示页面的结构和内容&#xff0c;而CSS描述的是页面的样式&#xff08;包括大小/位置/字体/颜色/背景等&#xff09;基本语言规范选…

[element plus] 对话框组件再封装使用 - vue

学习关键语句: 饿了么组件dialog组件使用 dialog组件二次封装 vue3中封住的组件使用update触发更新 vue3中封装组件使用v-model:属性值来传值 写在前面 这是我遇到的一个页面需求 , 其中一个对话框的内容是很常用的 , 所以我将它封装出来才写的一篇文章 现在给出如下需求: 封…

Git(分布式版本控制系统)

提到git了&#xff0c;我们先来说一下什么是git? 1、通俗一点&#xff0c;就是一个人工版本控制器 通过人工的复制行为来保存项目的不同阶段的内容&#xff0c;添加适当的一些描述文字加以区分 繁琐、容易出错 产生大量重复数据 2、什么是版本控制&#xff1f; 版本控制是指对…

JVM16命令行

2. JVM 监控及诊断工具-命令行篇 2.1. 概述 简单命令行工具 在我们刚接触 java 学习的时候&#xff0c;大家肯定最先了解的两个命令就是 javac&#xff0c;java&#xff0c;那么除此之外&#xff0c;还有没有其他的命令可以供我们使用呢&#xff1f; 我们进入到安装 jdk 的…

JAVA并发编程面试题合集

1.在Java中守护线程和本地线程的区别&#xff1f; Java中的线程分为两种&#xff1a;守护线程&#xff08;Daemon&#xff09;和用户线程&#xff08;User&#xff09;任何线程都可以设置为守护线程和用户线程&#xff0c;通过方法Thread.setDaemon(boolean)&#xff1b;true表…

框架开发有哪些优势?Java主流框架

什么是框架“框架&#xff08;Framework&#xff09;"一词最早出现在建筑领域&#xff0c;指的是在建造房屋前期构建的建筑骨架。在编程领域&#xff0c;框架就是应用程序的骨架&#xff0c;开发人员可以在这个骨架上加入自己的东西&#xff0c;搭建出符合自己需求的应用系…

mac电脑数据恢复?真正实用的方法(2023最新)

使用电脑的用户都知道&#xff0c;被删除的文件一般都会经过回收站&#xff0c;想要恢复它直接点击“还原”就可以恢复到原始位置。mac电脑同理也是这样&#xff0c;但是“回收站”在mac电脑显示为“废纸篓”。 如果电脑回收站&#xff0c;或者是废纸篓里面的数据被清空了&…

Nginx第一讲

目录 一、Nginx01 1.1 Nginx简介 1.1.1 Nginx介绍 1.1.2 Nginx的应用 1.1.3 关于代理 1.1.4 负载均衡 1.1.5 动静分离 1.2 安装Nginx 1.2.1 安装依赖环境 1.2.2 安装nginx 1.2.3 nginx配置文件(nginx.conf) 1.2.4 反向代理实例1 1.2.5 安装tomcat 1.2.6 反向代理…

插画教育培训机构最新排名

学原画插画在哪里学比较好&#xff0c;最新插画培训班排名&#xff0c;给大家梳理了国内最新5家专业的插画师培训班排名&#xff0c;各有优势和特色&#xff0c;给大家借鉴&#xff01; 一&#xff1a;国内插画培训机构排名 1、轻微课&#xff08;五颗星&#xff09; 主打课程有…

flutter 微信通讯录

Flutter 仿制微信通讯录效果&#xff0c;致效果如下&#xff1a; 有几个技术细节&#xff1a; 总体可滑动&#xff0c;少于屏幕长度也可滑动对于数据的处理。昵称 拼音首字母排序&#xff0c;右侧字母导航&#xff0c;点击/滑动&#xff1b;移动到指定位置当点击/滑动 右侧移动…

大数据实操项目分享:餐饮智能推荐服务在线实习项目

项目背景&#xff1a;在“互联网"背景下&#xff0c;餐饮企业的经营方式发生了很大的变革&#xff1a;团购和020拓宽了销售 渠道&#xff0c;电子点餐、店内WIFI等信息技术提升了服务水平&#xff0c;大数据、私人定制更好地满足了细分市场的需求等。但是与此同时&#xf…

天!转转MySQL机房迁移半小时结束战斗?

文章目录1 背景2 迁移方案选择2.1 方案一&#xff1a;扩容主从切换2.2 方案二&#xff1a;级联切换2.3 方案对比3 如何又快又稳完成MySQL机房迁移3.1 提前搭建级联3.2 停服3.3 批量操作自动化&#xff0c;关键步骤解耦3.4 集群分级3.5 切换前、后置检查3.6 灰度切换验证4 写在最…

rk3288-android8.1-以太网ethernet和蓝牙Bluetooth

遇到一个现象,以太网和蓝牙打不开 经过不断分析和查找发现问题在.config中 CONFIG_MOTORCOMM_PHYy 会导致以太网的eth0注册不成功(现在是双网口,还有个USB网卡) 改成# CONFIG_MOTORCOMM_PHY is not set 后以太网可以正常 # CONFIG_RTC_DRV_RK808 is not set 会导致蓝牙打不…

【分类评价指标】如何评估多(二)分类算法的性能:Acc、Precision、Recall、F1等

【分类评价指标】如何评估多&#xff08;二&#xff09;分类算法的性能&#xff1a;Acc、Precision、Recall、F1等 文章目录【分类评价指标】如何评估多&#xff08;二&#xff09;分类算法的性能&#xff1a;Acc、Precision、Recall、F1等1. 前言2. 二分类任务2.1 混淆矩阵2.2…

工控攻击,黑客组织GhostSec 称入侵以色列55 家Berghof PLC

“巴以冲突”在网络上依然硝烟弥漫。当地时间9月12日消息&#xff0c; 一个名为GhostSec的黑客组织声称入侵了以色列55台Berghof可编程逻辑控制器&#xff08;PLC&#xff09;。该网络攻击行为被视为“解放巴勒斯坦”运动的组成部分。 以色列工业网络安全公司OTORIO对此次事件…

JVM内存结构和GC调优

一 、JVM简介 1.1 JVM是什么&#xff1f; Java Virtual Machine(Java虚拟机) Write Once Run Anywhere 1.2 JDK JRE JVM Java官网 &#xff1a;https://docs.oracle.com/javase/8/ Reference -> Developer Guides -> 定位到: https://docs.oracle.com/javase/8/docs…

MySQL数据库——JDBC编程

文章目录一、什么是Java的JDBC二、JDBC编程三、代码整体展示一、什么是Java的JDBC JDBC&#xff0c;即Java Database Connectivity。意思是java数据库连接。是一种用来执行 SQL 语句的 JavaAPI&#xff0c;是Java中数据库的连接规范。这个 API 由 java.sql* 和 javax.sql* 包中…