[经典面试题]给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数

2024-02-19 02:38

本文主要是介绍[经典面试题]给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【题目】

给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数


---------百度校招

【分析】

1.对于给定的N,我们可以用筛法求素素数的方法在O(n)的时间复杂度内求出所有的素数。

2.除2之外,所有的素数相加都为偶数,所以求出6~N之间的素数,打印两两的和就可以,时间复杂度O(n^2)

【代码】

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;const int MAX = 1000001;
int Mark[MAX];
int Prime[MAX];
// 刷法求素数
void IsPrime(){int index = 0;// 初始化memset(Mark,0,sizeof(Mark[0])*MAX);for(int i = 2;i <= MAX;i++){//如果未标记则得到一个素数if(Mark[i] == 0){Prime[index++] = i;}//if//标记目前得到的素数的i倍为非素数for(int j = 0;j < index,Prime[j] * i <= MAX;j++){Mark[Prime[j]*i] = 1;// prime数组 中的素数是递增的,当 i 能整除 prime[j],// 那么 i*prime[j+1] 这个合数肯定被 prime[j] 乘以某个数筛掉if(i % Prime[j] == 0){break;}//if}//for}//for
}void PrimeSum(int n){int sum;int* array = (int*)malloc(sizeof(int)*(2*n));// 初始化memset(array,0,sizeof(array[0])*(2*n+1));// 统计for(int i = 6;i <= n;i++){// 非素数if(Mark[i] == 1){continue;}for(int j = i+1;j <= n;j++){// 非素数if(Mark[j] == 1){continue;}sum = i+j;// 两两之和为偶数的那些偶数if(array[sum] == 0){array[sum] = 1;}//if}//for}//for// 输出两两之和为偶数的那些偶数for(int i = 18;i <= (n+n);i++){if(array[i]){cout<<i<<endl;}//if}//for
}int main(){//筛法求素数IsPrime();// 两两之和为偶数的那些偶数PrimeSum(11);return 0;
}


这篇关于[经典面试题]给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/723254

相关文章

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

一些其他面试题

阿里二面:那你来说说定时任务?单机、分布式、调度框架下的定时任务实现是怎么完成的?懵了。。_哔哩哔哩_bilibili 1.定时算法 累加,第二层每一个格子是第一层的总时间400 ms= 20 * 20ms 2.MQ消息丢失 阿里二面:高并发场景下引进消息队列有什么问题?如何保证消息只被消费一次?真是捏了一把汗。。_哔哩哔哩_bilibili 发送消息失败

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo