数素数

news2024/11/20 19:44:10

目录

1013 数素数

输入格式:

输出格式:

输入样例:

输出样例:

代码长度限制:

时间限制:

内存限制:

思路:

   1.判断素数

  1.2素数判断代码:

  2.数组存素数

  2.2存素数代码:

  3.输出Pm到Pn的全部素数

  3.2代码

总代码:

 总结:

题目链接:


1013 数素数

令 Pi​ 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM​ 到 PN​ 的所有素数。

输入格式:

输入在一行中给出 M 和 N,其间以空格分隔。

输出格式:

输出从 PM​ 到 PN​ 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

输入样例:

5 27

输出样例:

11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

代码长度限制:

16 KB

时间限制:

200 ms

内存限制:

64 MB

思路:

   1.判断素数

     我们需要写一个判断一个整数是否是一个素数的函数:

            素数是什么呢?
            是除了1和它本身以外没有任何的因子.
            那么我们只要发现它的一个因子就可以说他不是素数,反之,返回true.
            因子是什么?
            一个数除以它的因子余数为0.
            我们可以根据这一点来进行判断,进行for枚举.
            那么范围是多少呢,1不是素数也不是合数,要在一开始进行特判.
            那么初始从=2开始,小于n吗?
            这样也可以,但是还可以进行优化.
            拿25来说,从2枚举到25,是不是浪费了很多.
            我们只要取25的根号,也就是5来当=2;<=5;
            为什么呢?
            因为5是他一个因子中最大的,只要看5以下的就行了.
            我们来细分以下,拿24为例:
                24=1*24;
                24=2*12;
                24=3*8;
                24=4*6;
                你看,我们给24开个根号,值在4~5之间,也就是说循环最多到4.
                循环过程:
                  24%2=0;
                  24%3=0;
                  24%4=0;
                你们可能会疑惑,还有12,8,6没有除余判断呢!
                其实根本没有必要,2,3,4和12,8,6相乘等于24,只要2,3,4除余为0,那么代表着12,8,6和24相除余数为0. 

  1.2素数判断代码:

int pd(int x){ //判断一个整数是不是素数 
	bool f=true; //刚开始定义为是素数 
    int k; //循环变量 
    if(x==1) //1既不是素数也不是合数,要首先排除掉 
	  f=false;  
    for(k=2;k<=sqrt(x);k++){ //循环遍历,sqrt函数是求一个整数开了根号后的值. 
        if(x%k==0){ //素数不能和1除外和他本身除外的任何数余数为0 
            f=false; //代表有一个因数了,就不是素数了 
			break; //退出 
        }
        else 
		  f=true; //是素数 
	}
    return f; //返回 
}

  2.数组存素数

  我们可以定义一个数组,里面存的就是素数.

  因为题目说了,N最大为10的四次方,那么素数顶了天也就只是10的四次方,就可以定义一个长度为10的四次方的数组a.

  素数最小是2,在题目要求中,素数最大不会超过10的四次方,我们就可以依次循环枚举从2开始,到10的次方,将每一个数都放入判断是否是素数的函数当中,如果为true,代表是素数,就存到数组a之中.

  2.2存素数代码:

	int a[100001],j=0; //定义存素数的数组a,和代表a数组下标的j 
	for(int i=2;i<=100001;i++) //依次循环遍历 
	  if(pd(i)) //判断这个数是不是素数 
	    a[j]=i,j++; //如果是,就存进去,将下标++ 

  3.输出Pm到Pn的全部素数

  因为题目里面有特殊要求,每十个素数在一行,而且行末都没有多余的空格,这些都需要进行特判才可以输出.每十个素数在一行,就需要判断%10是不是等于0,是的话就可以换行了,在行末,只有判断%10是不是等于9,后面就不需要加输出'空格'了!

  3.2代码

	int n,m,x=1;
	cin>>n>>m; //输入n和m 
	for(int i=(n-1);i<m;i++){ //遍历输出第n个素数到第m个素数,因为是从下标为0开始计算,要减去一个1 
		if(i==(n-1)+x*10){ //一行十个素数是不是都输出了 
			x++; //10的倍数计数器++ 
			cout<<endl; //换行 
		}
		if(i==(m-1)||i==(n-1)+x*10-1) //如果到了一行的末尾 
		  cout<<a[i]; //后面不输出空格 
		else //如果没有到末尾 
		  cout<<a[i]<<" ";	//那就输出空格 
	}

总代码:

#include<bits/stdc++.h>
using namespace std;
int pd(int x){ //判断一个整数是不是素数 
	bool f=true; //刚开始定义为是素数 
    int k; //循环变量 
    if(x==1) //1既不是素数也不是合数,要首先排除掉 
	  f=false;  
    for(k=2;k<=sqrt(x);k++){ //循环遍历,sqrt函数是求一个整数开了根号后的值. 
        if(x%k==0){ //素数不能和1除外和他本身除外的任何数余数为0 
            f=false; //代表有一个因数了,就不是素数了 
			break; //退出 
        }
        else 
		  f=true; //是素数 
	}
    return f; //返回 
}
int main(){
	int a[100001],j=0; //定义存素数的数组a,和代表a数组下标的j 
	for(int i=2;i<=100001;i++) //依次循环遍历 
	  if(pd(i)) //判断这个数是不是素数 
	    a[j]=i,j++; //如果是,就存进去,将下标++ 
	int n,m,x=1;
	cin>>n>>m; //输入n和m 
	for(int i=(n-1);i<m;i++){ //遍历输出第n个素数到第m个素数,因为是从下标为0开始计算,要减去一个1 
		if(i==(n-1)+x*10){ //一行十个素数是不是都输出了 
			x++; //10的倍数计数器++ 
			cout<<endl; //换行 
		}
		if(i==(m-1)||i==(n-1)+x*10-1) //如果到了一行的末尾 
		  cout<<a[i]; //后面不输出空格 
		else //如果没有到末尾 
		  cout<<a[i]<<" ";	//那就输出空格 
	}
	cout<<endl;
	return 0;
}

 总结:

  这道题考的是学生们对于素数的判断,数组的存储,特别的输出的灵活的应用!

题目链接:

PTA | 程序设计类实验辅助教学平台千名教师建设,万道高质量题目,百万用户拼题的程序设计实验辅助教学平台https://pintia.cn/problem-sets/994805260223102976/exam/problems/994805309963354112

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

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

相关文章

Web大学生网页作业成品 bootstrap响应式网站开发 基于HTML+CSS+JS+Bootstrap制作火锅美食网站(4页)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

非零基础自学计算机操作系统 第1章 操作系统概述 1.4 操作系统的分类 1.4.3 实时操作系统 1.4.4 通用操作系统 1.4.5 单用户操作系统

非零基础自学计算机操作系统 文章目录非零基础自学计算机操作系统第1章 操作系统概述1.4 操作系统的分类1.4.3 实时操作系统1.4.4 通用操作系统1.4.5 单用户操作系统第1章 操作系统概述 1.4 操作系统的分类 1.4.3 实时操作系统 所谓实时&#xff0c;是指系统能够对外部请求做…

R语言多重比较方法

假设检验的基本原理是小概率原理&#xff0c;即我们认为小概率事件在一次试验中实际上不可能发生。 多重比较的问题 当同一研究问题下进行多次假设检验时&#xff0c;不再符合小概率原理所说的“一次试验”。如果在该研究问题下只要有检验是阳性的&#xff0c;就对该问题下阳性…

c#入门-静态引用,扩展方法

静态引用 声明静态引用 引用命名空间时&#xff0c;可以在using后面加static修饰符。 然后把要引用的命名空间改为带命名空间的一个具体的类。 这称为静态引用。 using static System.Int32; using static System.Console; int a Parse(ReadLine());静态引用的效果 静态引…

VRC改模从入门到入门

第一步入门 从unity开始 bilibili超细心的unity入门教程 虽然视频很长&#xff0c;但是从p1看到p41就行&#xff0c;脚本部分完全不需要看&#xff0c;因为vrc上传会过滤掉不是他们的脚本的。 unity下载一定要下载2019.4.31f1版本&#xff0c;哔哩哔哩教程有下载unity对应版本…

基于Android的外卖App系统设计

基于Android的外卖App系统设计 摘要 随着智能手机的快速普及&#xff0c;智能手机操作系统市场风生水起。为了让智能手机用户能够随时随地查询互联网所提供的服务&#xff0c;一种高效的办法就是将应用系统的功能拓展到手机终端上&#xff0c;让手机能够通过移动网以及互联网…

CentOS 安装 mysql 8.0

目录 下载 安装步骤 上传 解压安装 参考资料 补充报错解决 下载 MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ 安装步骤 上传 使用xshell&#xff0c;连接服务器&#xff0c;用 rz命令接收下载的文件&#xff08;该命令使用 yum…

Linux 文件属性

Linux 系统是一种典型的多用户系统&#xff0c;不同的用户处于不同的地位&#xff0c;拥有不同的权限。 为了保护系统的安全性&#xff0c;Linux 系统对不同的用户访问同一文件&#xff08;包括目录文件&#xff09;的权限做了不同的规定。 在 Linux 中我们通常使用以下两个命…

LeetCode Hot 100~Day1

目录 两数之和 两数相加 无重复字符的最长子串 最长回文子串 盛最多水的容器 删除链表的倒数第n个节点 合并两个有序链表 有效的括号 两数之和 题目链接&#xff1a;1.两数之和 示例 输入&#xff1a;nums [2,7,11,15], target 9 输出&#xff1a;[0,1] 解释…

ADI Blackfin DSP处理器-BF533的开发详解33:数字信号处理详解-FFT(含源代码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 FFT&#xff08;Fast Fourier Transformation&#xff09;&#xff0c;即为快速傅氏变换&#xff0c;是离散傅氏变换的快速算法&#x…

web前端期末大作业:JavaScript大作业——福五鼠动漫网页制作(6页)带轮播图效果 学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

R语言大数据分析纽约市的311万条投诉统计可视化与时间序列分析

介绍 本文并不表示R在数据分析方面比Python更好或更快速&#xff0c;我本人每天都使用两种语言。这篇文章只是提供了比较这两种语言的机会。 本文中的 数据 每天都会更新&#xff0c;我的文件版本更大&#xff0c;为4.63 GB。 CSV文件包含纽约市的311条投诉。它是纽约市开放…

MySQL 数据库 C/C++ 常用函数

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

火爆出圈的OpenAI模型ChatGPT体验

1、ChatGPT简要介绍 ChatGPT是一种高效的语言模型&#xff0c;全称为"聊天式自动回复生成技术"&#xff08;Chat-based Automatic Reply Generation Technology&#xff09;&#xff0c;用于预测人类语言的后续内容。它是基于OpenAI的GPT-3模型构建的&#xff0c;具…

XCIE-HUAWEI-超级完整的BGP-1

XCIE-HUAWEI-超级完整的BGP-1 声明&#xff0c;内容对比前面的可能差一点&#xff0c;因为这个BGP我是会的&#xff0c;但是华为的特性啥的不太会 所以相对来说可能没那么详细&#xff0c;不过应该也够的了&#xff0c;要看思科的翻我的文章去有思科的 先说一个东西 面试会问…

S7-200SMART实现MODBUS TCP通信(客户端+服务器)的具体方法和步骤示例

S7-200SMART实现MODBUS TCP通信(客户端+服务器)的具体方法和步骤示例 STEP7-Micro/WIN SMART 从V2.4 版本开始,软件中直接集成 Modbus TCP 库指令,安装软件后,Modbus TCP 指令位于 STEP7-Micro/WIN SMART 项目树中“指令”文件夹的“库”文件夹中。 如下图Modbus TCP库指令…

R语言曲线回归:多项式回归、多项式样条回归、非线性回归数据分析

最近我们被客户要求撰写关于曲线回归的研究报告&#xff0c;包括一些图形和统计输出。本文将使用三种方法使模型适合曲线数据&#xff1a;1&#xff09;多项式回归&#xff1b;2&#xff09;用多项式样条进行B样条回归&#xff1b;3&#xff09; 进行非线性回归。在此示例中&am…

微信小程序 | 一比一复刻世界杯点球大战

&#x1f4cc;个人主页&#xff1a;个人主页 ​&#x1f9c0; 推荐专栏&#xff1a;小程序开发成神之路 --【这是一个为想要入门和进阶小程序开发专门开启的精品专栏&#xff01;从个人到商业的全套开发教程&#xff0c;实打实的干货分享&#xff0c;确定不来看看&#xff1f; …

Codeforces Round #837 (Div. 2) Hossam and Friends

原题链接&#xff1a;https://codeforces.com/contest/1771/problem/B 题意 &#xff1a;你总共有n个朋友编号1~n&#xff0c;其中m对互不认识&#xff0c;求1~n区间中没有互不认识的子段的总个数。 思路&#xff1a;总字段个数为每个编号前面的编号个数&#xff08;包括自己…

RK3568平台开发系列讲解(安卓适配篇)Android11 预安装应用功能

&#x1f680;返回专栏总目录 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f4e2;Android11 上的应用预安装功能&#xff0c;主要是指配置产品时&#xff0c;需要将提前准备好的第三方应用 apk 放进 android 系统。在实际的研发过程…