算法笔记-第五章-素数

算法笔记-第五章-素数

  • 素数判断
  • 打印素数表
    • 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;
}

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

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

相关文章

浅谈电气防火限流式保护器在小型人员密集场所中的应用

摘要&#xff1a;本文通过结合城市中小型人员密集场所的特点和电气防火限流式保护器的功能&#xff0c;阐述了该类筑物预防电气火灾事故的方法。 关键词&#xff1a;小型人员密集场所&#xff1b;电气防火限流式保护器 0&#xff1a;概述 近年来&#xff0c;随着社会经济的不…

二维码智慧门牌管理系统升级,实现综合运营可视化

文章目录 前言一、升级解决方案概述二、重点指标综合展示三、综合运营可视化 前言 随着科技的发展和城市化进程的加速&#xff0c;传统的门牌管理系统已经无法满足现代社会的需求。为了解决这一问题&#xff0c;一款二维码智慧门牌管理系统应运而生&#xff0c;为城市管理和运…

redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对这篇博客也感兴趣o (ˉ▽ˉ&#xff1b;) &#x1f4dc;Redis 学习笔记&#xff0c;超基础&#xff0c;适合零基础和弱基础学习 目录 1、Redis最主要的用途 2、什么是缓存&#xff1f; 2.1、此处介…

vue3中的getCurrentInstance()函数,为什么要解构出proxy,因为proxy是响应式对象,要用响应式对象

Vue3组合式API&#xff1a;getCurrentInstance_vue3 getcurrentinstance-CSDN博客 1.getCurrentInstance函数只能写在生命周期钩子函数里&#xff0c;不能写在除生命周期之外的普通函数里&#xff0c;写了拿到的是null 2.调用 getCurrentInstance函数拿到的是一个对象&#xf…

SAP-SD-一个无交货数量的项目是不允许的,项目将被删除

创建外向交货单时报错 初步判断是没有销售订单库存&#xff0c;普通库存1000&#xff0c;从普通库存转移100到销售订单库存&#xff0c;移动类型413 转移完成 再VL01N就可以了

15.“百钱百鸡“问题

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码1程序运行代码优化程序运行代码优化进阶 前言 本系列为结构循环编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 二、题目分析 三、解题 程序运行代码1 #include <stdio.h> int main…

vue-router路由

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:Vue-Router路由 目录 Vue-Router路由 1、路由的概念 2、前端路由实现 3、Vue Router 3.1、介绍…

Open3D FPS最远点下采样

目录 一、算法原理1、原理概述2、实现流程3、主要函数4、算法源码二、代码实现三、结果展示1、采样前的点云2、采样后的点云本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,

通信原理板块——语音压缩编码

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 1、语音压缩编码 语音压缩编码可以…

Vue学习day01:追风记事本

文章目录 一、插值表达式二、Vue常用指令2.1 内容渲染指令2.2 条件渲染指令2.3 事件绑定指令2.4 属性绑定指令2.5 列表渲染指令2.6 双向绑定指令 三、案例&#xff1a;追风记事本 一、插值表达式 插值表达式是一种Vue的模板语法&#xff0c;我们可以用插值表达式渲染出Vue提供的…

RocketMQ底层通信机制

分布式系统各个角色间的通信效率很关键&#xff0c;通信效率的高低直接影响系统性能&#xff0c;基于Socket实现一个高效的TCP通信协议是很有挑战的&#xff0c;本节介绍RocketMQ是如何解决这个问题的。 1.Remoting模块 RocketMQ的通信相关代码在Remoting模块里&#xff0c;先…

电脑技巧:推荐基于浏览器的远程桌面访问控制工具

一、软件简介 Getscreen.me是一个基于浏览器的远程桌面访问控制工具&#xff0c;可以轻松地远程访问控制特定设备。并且注册登录账户实现允许设置具有永久访问权限的设备&#xff0c;可以通过一键进行快速连接访问&#xff0c;无需共享 ID、密码或任何内容。 Getscreen.me采用…

7.jvm对象内存布局

目录 概述对象里的三个区对象头验证代码控制台输出分析 验证2代码控制台输出 实例数据对其填充 访问对象结束 概述 jvm对象内存布局详解。 相关文章在此总结如下&#xff1a; 文章地址jvm基本知识地址jvm类加载系统地址双亲委派模型与打破双亲委派地址运行时数据区地址运行时数…

光明源@为什么需要智慧厕所,智慧厕所是干什么的?

在当今数字化时代&#xff0c;城市的发展日新月异&#xff0c;城市居民对生活品质和城市服务的期望也与日俱增。在城市规划和基础设施建设中&#xff0c;智慧厕所作为一项创新性的举措&#xff0c;正逐渐崭露头角。本文将探讨为什么需要智慧厕所以及它们的实际功能和意义。 城市…

SAP中销售业务的查询修改及冲销操作手册

目的 物流在销售订单发货开票出问题时进行查询分析及处理冲销的相关操作 触发条件 销售业务出现变更导致需要重新做销售或人为错误 必要条件 订单&#xff0c;交货单&#xff0c;发票己完成并过账 有用提示 在实际冲销业务过程中需要去分析&#xff0c;在了解业务的情况下去…

asp.net实验管理系统VS开发sqlserver数据库web结构c#编程web网页设计

一、源码特点 asp.net 实验管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发。 asp.net实验管理系统1 应用技术&am…

P6入门:项目初始化6-项目详情之资金Funding

前言 使用项目详细信息查看和编辑有关所选项目的详细信息&#xff0c;在项目创建完成后&#xff0c;初始化项目是一项非常重要的工作&#xff0c;涉及需要设置的内容包括项目名&#xff0c;ID,责任人&#xff0c;日历&#xff0c;预算&#xff0c;资金&#xff0c;分类码等等&…

百度文心一言

1分钟了解一言是谁&#xff1f; 一句话介绍【文心一言】 我是百度研发的人工智能模型&#xff0c;任何人都可以通过输入【指令】和我进行互动&#xff0c;对我提出问题或要求&#xff0c;我能高效地帮助你们获取信息、知识和灵感哦 什么是指令&#xff1f;我该怎么和你互动&am…

SAP-SD-外向交货单交期不符

创建外向交货单时报错 销售订单的交期还没到&#xff0c;所以不能做外向交货单 但是货已经加工完成&#xff0c;现在想交货 查看销售订单的交货期为12月15日&#xff08;va03&#xff09; 在VL01N里修改“选择日期为12月15日”就可以了。

7天入门python系列之第五天python项目练习

第七天 Python项目实操 编者打算开一个python 初学主题的系列文章&#xff0c;用于指导想要学习python的同学。关于文章有任何疑问都可以私信作者。对于初学者想在7天内入门Python&#xff0c;这是一个紧凑的学习计划。但并不是不可完成的。 学到第7天说明你已经对python有了一…