算法笔记-第五章-素数

news2025/1/19 17:01:35

算法笔记-第五章-素数

  • 素数判断
  • 打印素数表
    • c++代码
    • c 代码
  • 最大素数
  • 最小素数
  • 孪生素数

素数判断

在这里插入图片描述

//素数
#include <cstdio>
#include <cmath>

bool isPrime(int n) 
{
    if (n <= 1) //已知一个素数判断:条件就是n是否能被2,,,,,整除,所以1且小于是不行的
    {
        return false;
    }
    int sqr = (int)sqrt(1.0 * n);//范围缩小到本身开方
    for (int i = 2; i <= sqr; i++)   
    {
        if (n % i == 0) //进行判断素数  
        {
            return false;  
        }
    }
    return true;  
}

int main() {  
    int n;  
    scanf("%d", &n);  
    printf(isPrime(n) ? "Yes" : "No");  
    return 0;  
}

打印素数表

在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/61298fca1493407cac00d42aeadc8d97.png)

//打印素数表:
//本质是将所有数进行枚举,然后进行判断素数
//可以用布尔函数进行改变和判断

c++代码

用动态数组进行存储

#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;

const int MAXN = 1000000 + 1;
bool isPrime[MAXN];
vector<int> primes;

void getPrimes(int n) {
    memset(isPrime, true, sizeof(isPrime));
    for (int i = 2; i <= n; i++) {
        if (isPrime[i]) {
            primes.push_back(i);
            for (int j = i + i; j <= n; j += i) {
                isPrime[j] = false;    
            }
        }
    }
}

int main() {    
    int n;    
    scanf("%d", &n);    
    getPrimes(n);    
    for (int i = 0; i < primes.size(); i++) {    
        printf("%d\n", primes[i]);    
    }
    return 0;    
}

c 代码

#include<stdio.h>
#include<math.h>
bool isprime(int n)//这个就是改变布尔函数,下面用于输出素数表
{
	if (n <= 1) return false;
	int sqr = (int)sqrt(1.0 * n);
	for (int i = 2; i <= sqr; i++)
	{
		if (n % i == 0) return false;
	}
	return true;
}

int prime[101], pum = 0;
bool p[101] = { 0 };
void find_prime()//求素数表
{
	for (int i = 1; i < 101; i++)  
	{
		if (isprime(i) == true)  
		{
			prime[pum++] = i;  
			p[i] = true;  
		}
	}
}
int main()  
{
	find_prime();  
	for (int i = 0; i < pum; i++)  
	{
		printf("%d ", prime[i]);  
	}
}

最大素数

在这里插入图片描述
需要注意的电视:
memset(isPrime, true, sizeof(isPrime));//这个表示的是c++中的一个函数,局势对于数组进行赋值操作,后面是空间的大小

#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;


//定义数组,布尔函数,以及动态数组
const int MAXN = 1000000 + 1;
bool isPrime[MAXN];
vector<int> primes;


void getPrimes(int n) {
    memset(isPrime, true, sizeof(isPrime));

    //是素数就加入到数组中
    for (int i = 2; i <= n; i++) {
        if (isPrime[i]) {
            primes.push_back(i);   
            for (int j = i + i; j <= n; j += i) {//进行判断是不是素数,这个方法,,,还行吧,不用调用函数了



                isPrime[j] = false;   
            }
        }
    }
}

int main() {   
    int n;   
    scanf("%d", &n);   
    getPrimes(n);   
    printf("%d", primes.back());//输出最后一位   
    return 0;   
}

最小素数

在这里插入图片描述


//求出大于本身数的最小素数
//这个方法是在不是一个好的方法
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;

const int MAXN = 1000000 + 1;
bool isPrime[MAXN];//布尔函数
vector<int> primes;//数组嘛



//从2开始到N存入素数
void getPrimes() {
    memset(isPrime, true, sizeof(isPrime));//对于布尔函数赋值的很好的操作
    for (int i = 2; i < MAXN; i++) {
        if (isPrime[i]) {
            primes.push_back(i);
            for (int j = i + i; j < MAXN; j += i) {
                isPrime[j] = false;
            }
        }
    }
}


int main() {  
    int n;  
    scanf("%d", &n);  

    getPrimes();  

    //输出一开始的数就是最小  
    for (int i = 0; i < primes.size(); i++) {  
        if (primes[i] >= n) {  
            printf("%d", primes[i]);  
            break;  
        }
    }
    return 0;  
}

孪生素数

在这里插入图片描述

每次k和k+2都是素食,所有只要考虑的是截止的是第几个就行了

int getTwinPrime(int n) {
    int k = 1;
    for (int i = 0; i < n; i++) {
        do {
            k += 2;
        } while (!isPrime(k) || !isPrime(k + 2));
    }
    return k;
}

整体的代码是

#include <cstdio>
#include <cmath>

bool isPrime(int n) {
    if (n <= 1) {
        return false;
    }
    int sqr = (int)sqrt(1.0 * n);
    for (int i = 2; i <= sqr; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

int getTwinPrime(int n) {
    int k = 1;
    for (int i = 0; i < n; i++) {
        do {
            k += 2;
        } while (!isPrime(k) || !isPrime(k + 2));
    }
    return k;
}

int main() {
    int n;
    scanf("%d", &n);
    int twinPrime = getTwinPrime(n);
    printf("%d %d", twinPrime, twinPrime + 2);
    return 0;
}

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

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

相关文章

ES聚合与分组查询取值参数含义(Java api版本)

一、说明 在项目中使用Elasticsearch的聚合与分组查询后,对于返回结果一脸懵逼,查阅各资料后,自己总结了一下参数取值的含义,不一定全面,只含常见参数 二、分组查询 2.1 参数解释 SearchResponse<Map> searchResponse null;try {searchResponse client.search(s ->…

CentOS中安装常用环境

一、CentOS安装 redis ①&#xff1a;更新yum sudo yum update②&#xff1a;安装 EPEL 存储库 Redis 通常位于 EPEL 存储库中。运行以下命令安装 EPEL 存储库 sudo yum install epel-release③&#xff1a;安装 Redis sudo yum install redis④&#xff1a;启动 Redis 服…

哪种猫罐头比较好?推荐给新手养猫的5款好口碑猫罐头!

新手养猫很容易陷入疯狂购买的模式&#xff0c;但有些品牌真的不能乱买&#xff01;现在的大环境不太好&#xff0c;我们需要学会控制自己的消费欲望&#xff0c;把钱花在刀刃上&#xff01;哪种猫罐头比较好&#xff1f;现在宠物市场真的很内卷&#xff0c;很多品牌都在比拼产…

SOLIDWORKS功能布局实用技巧之保存实体技术

在SOLIDWORKS软件中&#xff0c;有一些命令可以将一个或多个实体保存为独立的零件文件。然而&#xff0c;每个命令都具有不同的特性&#xff0c;有些命令的选项可以让您在保存多个零件时直接生成装配体文件。让我们来深入了解这些功能布局技巧&#xff0c;特别是实体保存技术。…

Moka人事:实现无代码开发的API连接,打通电商平台与用户运营系统

无代码开发的API连接&#xff1a;Moka人事的核心优势 Moka人事&#xff0c;是北京希瑞亚斯科技有限公司于2015年推出的一款数据驱动的智能化HR SaaS产品。这款产品的主要优势在于其无需进行API开发即可实现系统的连接和集成&#xff0c;这不仅大大提升了企业的工作效率&#x…

软件测试/测试开发丨掌握未来,引领人工智能测试新潮流!

点此领取人工智能课程 在数字化革命的浪潮中&#xff0c;人工智能软件成为企业创新和成功的关键推动力。为了在这个竞争激烈的市场中脱颖而出&#xff0c;精湛的人工智能软件测试技能变得至关重要。 ChatGPT应用实战&#xff1a; 学员将深入了解 ChatGPT 的实际应用&#xf…

【BIM入门实战】高程点无法放置的解决方法

文章目录 一、问题提出二、解决办法1. 检查模型图形样式2. 高程点可以放置的图元一、问题提出 在平面图中添加高程点时有时会遇到无法在楼板等平面构件上放置高程点,应如何设置才能使高程点正常放置? 如下图所示,楼板上无法放置高程点: 二、解决办法 1. 检查模型图形样式…

安防监控展示预约小程序的作用如何

监控在生活中的用途非常广泛&#xff0c;普遍应用于小区门户、商业大厦、产业基地、家庭、汽车等场景中&#xff0c;市场需求较大&#xff0c;同时随着科技发展&#xff0c;安防监控产品更新迭代也比较快&#xff0c;衍生出的经销店、安装技术工等产业近些年也比较火。 安防监…

C++初阶(十一)STL简介及string类初讲

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、什么是STL二、STL的版本三、STL的六大组件四、STL的重要性五、如何学习STL六、STL的缺陷七…

NewStarCTF2023 Week3 Reverse方向 题目STL WP

分析 代码不多&#xff0c;逻辑挺清楚的。 先用Z3解出V7&#xff1a; from z3 import *s Solver() v1, v2, v3, v4, v5, v6 BitVecs(v1 v2 v3 v4 v5 v6, 32) v7, v8, v9, v10, v11 BitVecs(v7 v8 v9 v10 v11, 32)s.add((v1 << 15) ^ v1 0x2882D802120E) s.add((v2 …

Vue工程化

目录 一、环境准备 npm 二、Vue整站使用 1、Vue项目创建和启动 区别 目录结构 启动 2、Vue开发流程 App.vue 快速入门 3、API风格 案例 细节注意 代码实现 测试 一、环境准备 介绍&#xff1a;create-vue是Vue官方提供的最新的脚手架工具&#xff0c;用于快速生…

工业除尘器笔记

工业除尘器用于对工业生产产生的有害气体和粉尘进行吸附。相关标准的制定最早可以追溯到1960年代以前。注意&#xff0c;本文的附录包含一起完整的工业除尘器事故的分析和定责过程。相关事故分析定责文档源头摘自上海市政府网站。 在产品设计行业和关联下游行业&#xff0c;在…

核心容器中bean的操作

bean配置 bean基础配置 bean别名配置 **注意事项&#xff1a;**获取bean无论是通过id还是name获取&#xff0c;如果无法获取到&#xff0c;将抛出异常NoSuchBeanDefinitionException&#xff08;NoSuchBeanDefinitionException&#xff1a;No bean named ‘bookServiceImpl’ …

15技术太卷我学APEX-curl请求apex的autoRest

0 curl概述 cURL无处不在。它几乎隐藏在所有设备中&#xff0c;例如汽车&#xff0c;蓝光播放器等。它通过互联网协议传输任意类型数据。 0.1 cURL是什么意思&#xff1f; cURL&#xff08;客户端URL&#xff09;是一个开放源代码的命令行工具&#xff0c;也是一个跨平台的库…

智慧工地AI视频管理平台源码

智慧工地是指以物联网、移动互联网技术为基础&#xff0c;充分应用人工智能等信息技术&#xff0c;通过AI赋能建筑行业&#xff0c;对住建项目内人员、车辆、安全、设备、材料等进行智能化管理&#xff0c;实现工地现场生产作业协调、智能处理和科学管理。智慧工地的核心是以一…

三子棋——C语言初阶

一.游戏思路&#xff1a; 设计菜单&#xff0c;选择开始游戏(1)还是退出游戏(0)&#xff08;若是输入数字不再输入范围内&#xff0c;则“选择错误”&#xff09;初始化棋盘打印棋盘&#xff08;步骤二和三不可调换位置&#xff09;玩家下棋&#xff08;坐标落子&#xff09;—…

php-cli

//运行index.php ./php index.php//启动php内置服务器 ./php -S 0.0.0.0:8080//启动内置服务在后台运行&#xff0c;日志输出到本目录下的server.log nohup ./php -S 0.0.0.0:8080 -t . > server.log 2>&1 &# 查找 PHP 进程 ps aux | grep "php -S 0.0.0.0:…

鸿蒙原生应用开发-折叠屏、平板设备服务卡片适配

一、多设备卡片适配原则 为不同尺寸的卡片提供不同的功能 在卡片开发过程中请考虑适配不同尺寸的设备&#xff0c;特别是在折叠屏和平板设备上&#xff0c;设备屏幕尺寸的变化直接影响了卡片内容的展示。请发挥想象力设计具有自适应能力的卡片&#xff0c;避免在卡片内容不做…

Java面试题(每天10题)-------连载(32)

目录 设计模式篇 1、工厂方法模式&#xff08;利用创建同一接口的不同实例&#xff09;&#xff1a; 2、抽象工厂模式&#xff08;多个工厂&#xff09; 3、单例模式&#xff08;保证对象只有一个实例&#xff09; 4、原型模式&#xff08;对一个原型进行复制、克隆产生类…

【Linux】gcc/g++ gdb 使用

目录 1&#xff0c;背景知识 2&#xff0c;gcc 如何完成 1&#xff0c;预处理(进行宏替换) 2&#xff0c;编译&#xff08;生成汇编&#xff09; 3&#xff0c;汇编&#xff08;生成机器可识别代码&#xff09; 4&#xff0c;连接&#xff08;生成可执行文件或库文件&…