python巧用定理判断素数

目录

判断一个数n是否是素数

求一个数的素因数个数

求大于等于指定数的最小素数


在数论中有三个非常重要的关于素数的定理

1、任何数都可以表示成若干个素数的乘积

2、任意数的素因子一个大于根号n的自然数,另一个与其对应的因子则必小于根号n。

3、除了2和3以外的所有素数都是6k±1型(k=1、2、3、...),这里要反过来是不成立的,也就是说6k±1型的不一定都是素数,例如35是6k-1型,但它不是素数

判断一个数n是否是素数

方法1:遍历从2到n-1的所有因子,时间复杂度O(n)

def is_prime(n):if n < 2:    # 小于2的肯定不是素数return 0for i in range(2, n):if n % i == 0:    #如果存在2到n的因子,则不是素数return 0return 1    #如果2到n遍历完后都没有,则是素数

方法2:使用性质2,我们其实可以只遍历从2到根号n,此时时间复杂度降为O(\sqrt{n})

def is_prime(n):if n < 2:    # 小于2的肯定不是素数return 0for i in range(2, int(n**0.5)+1):    #这里int会向下取整,所以加1消除误差if n % i == 0:   return 0return 1    

方法3:使用性质2和性质3,从2到根号n,然后每隔6个数遍历,此时时间复杂度降为O(\frac{1}{6}\sqrt{n})

def is_prime(n):if n < 2: return 0if n <= 3:  # 2或3肯定是素数return 1if n % 2 == 0 or n % 3 == 0:    # 如果能整除2或3,则不是素数return 0for i in range(5, int(n ** 0.5) + 1, 6):#从5开始,步长为6if n % i == 0 or n % (i + 2) == 0:    # i表示6k-1,i+2表示6k+1return 0return 1

求一个数的素因数个数

根据定理1,任意数都可以表示为若干个素数的乘积,写一个程序,要求计算一个数的素因子个数

题目链接

https://www.lanqiao.cn/problems/2155/learning/?page=1&first_category_id=1&sort=students_count&category_id=3&name=%E8%B4%A8%E5%9B%A0%E6%95%B0

ans = 0
n = int(input())
# 2和3单独讨论
for i in [2, 3]:if n % i == 0:  # 如果可以整除i,即含有素因子ians = ans + 1  # 计数加1while n % i == 0:  # 将n一直除以i,直到n中没有因子in = n // ifor i in range(5, int(n ** 0.5) + 1, 6):  for j in [i, i + 2]:  # j分别表示6k-1和6k+1# 以下过程与上面同理if n % j == 0:ans = ans + 1while n % j == 0:n = n // jif n != 1:  # 如果最后除出来结果不是1,说明还剩个素因数,还需要再加1ans = ans + 1print(ans)

输入396,结果为3,因为396有2、3、11三个素因子

求大于等于指定数的最小素数

def is_prime(n):if n < 2:return 0if n <= 3:return 1if n % 2 == 0 or n % 3 == 0:return 0for i in range(5, int(n ** 0.5) + 1, 6):if n % i == 0 or n % (i + 2) == 0:return 0return 1n = int(input())if is_prime(n):  # 如果是素数则直接输出print(n)
else:for j in range(1, 7):  # 根据性质,最多隔6位肯定会有素数,所以一直给n加1,直到n是素数则输出n = n + 1if is_prime(n):print(n)break

输入17

输入35

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

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

相关文章

fast.ai 机器学习笔记(二)

机器学习 1&#xff1a;第 5 课 原文&#xff1a;medium.com/hiromi_suenaga/machine-learning-1-lesson-5-df45f0c99618 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 来自机器学习课程的个人笔记。随着我继续复习课程以“真正”理解它&#xff0c;这些笔记将继续更…

企业飞书应用机器人,使用python自动发送文字内容到群消息

文章目录 创建企业应用与开通机器人飞书发送信息的工具函数 创建企业应用与开通机器人 需要先创建应用&#xff0c;然后进入应用后&#xff0c;点击添加应用能力创建机器人&#xff1a; 参考官方文档&#xff0c;获取两个参数&#xff1a;app_id与app_secret 官方说明文档&…

低代码市场的未来展望:趋势、机遇与挑战

根据 Zoho 的一项新研究&#xff0c;低代码市场正处于成为主流的风口浪尖。该报告对全球 800 多名 IT 和业务领导者进行了调查&#xff0c;确定了推动其采用的几个因素。其中最重要的是提高应用程序的开发速度。 这一发现对企业领导者来说应该不足为奇。 客户、合作伙伴和员工…

6 scala-面向对象编程基础

Scala 跟 Java 一样&#xff0c;是一门面向对象编程的语言&#xff0c;有类和对象的概念。 1 类与对象 与 Java 一样&#xff0c;Scala 也是通过关键字 class 来定义类&#xff0c;使用关键字 new 创建对象。 要运行我们编写的代码&#xff0c;同样像 Java 一样&#xff0c;…

4核8g服务器能访问多少人?2024年测评

腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线&#xff1f;通用型-4核8G-180G-2000G&#xff0c;2000GB月流量&#xff0c;系统盘为180GB SSD盘&#xff0c;12M公网带宽&#xff0c;下载速度峰值为1536KB/s&#xff0c;即1.5M/秒&#xff0c;假设网站内页平均大小为60KB…

C++数据类型、变量常量

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 大家新年快乐&#xff0c;今天我们来学习C的数据类型&#xff0c;变量常量。 文章目录 1.数据类型的概念与思想 1.1基本数据类型 1.2复合数据类型 1.3类型修饰符 1.4类型转换 1.4.1static_cast 1.4.2…

【射影几何15】python双曲几何工具geometry_tools

目录 一、说明二、​环境问题&#xff1a;如何安装三、实现一个简单的例子四、绘制双曲组五、使用有限状态自动机加快速度六、资源和代码 一、说明 Geometry_tools 是一个 Python 包&#xff0c;旨在帮助您处理和可视化双曲空间和射影空间上的群动作。 该包主要构建在 numpy、…

【EAI 011】SayCan: Grounding Language in Robotic Affordances

论文标题&#xff1a;Do As I Can, Not As I Say: Grounding Language in Robotic Affordances 论文作者&#xff1a;Michael Ahn, Anthony Brohan, Noah Brown, Yevgen Chebotar, Omar Cortes, Byron David, Chelsea Finn, Chuyuan Fu, Keerthana Gopalakrishnan, Karol Hausm…

【综述】2024 [arXiv] 通用时间序列表示学习

论文标题&#xff1a;Universal Time-Series Representation Learning: A Survey 链接&#xff1a;https://arxiv.org/abs/2401.03717 作者&#xff1a;Patara Trirat, Yooju Shin, Junhyeok Kang, Youngeun Nam, Jihye Na, Minyoung Bae, Joeun Kim, Byunghyun Kim, Jae-Gil…

用Python动态展示排序算法

文章目录 选择冒泡插入排序归并排序希尔排序 经常看到这种算法可视化的图片&#xff0c;但往往做不到和画图的人心灵相通&#xff0c;所以想自己画一下&#xff0c;本文主要实现归并排序和希尔排序&#xff0c;如果想实现其他算法可参考这篇 C语言实现各种排序算法[选择&#x…

《雾锁王国》服务器怎么搭建,阿里云一键部署雾锁王国新手教程

上次讲了怎么搭建幻兽帕鲁服务器&#xff0c;今天讲讲如何搭建雾锁王国服务器&#xff0c;其实方法也非常简单&#xff0c;跟幻兽帕鲁一样&#xff0c;都是可以通过一键部署的方式来搭建的。 下面将会讲两种搭建《雾锁王国》服务器的方式&#xff0c;一种是你没有买过服务器&a…

leetcode:51.N皇后

起初会想到暴力&#xff0c;但是N不确定&#xff0c;所以不确定for的嵌套层数&#xff0c;所以我们采用回溯算法。 树形结构&#xff1a; 1.树的深度是第depth层 2.树的宽度是对每一行进行遍历 代码实现&#xff1a; 1.result是三维数组&#xff0c;一个棋盘是二维&#x…

电商小程序06用户审核

目录 1 创建自定义应用2 显示待办数量3 创建审核页面4 开发审核功能5 搭建布局6 最终效果总结 上一篇我们讲解了用户注册的功能&#xff0c;用户注册之后状态是待审核&#xff0c;需要管理员进行审核。通常给管理员提供一套PC端的软件进行相关的操作&#xff0c;在低代码中&…

Java强训day18(选择题编程题)

选择题 编程题 题目1 import java.util.Scanner;public class Main { public static void main(String[] args) {//1 |1 //1 |1//1 1 |2//1 1 1 |3//1 1 1 1 1 |5Scanner sc new Scanner(System.in);int n sc.nextInt();//从出生后第3个月起每个月都生一只兔子//一月的时…

FRP内网穿透如何避免SSH暴力破解(二)——指定地区允许访问

背景 上篇文章说到&#xff0c;出现了试图反复通过FRP的隧道&#xff0c;建立外网端口到内网服务器TCP链路的机器人&#xff0c;同时试图暴力破解ssh。这些连接造成了流量的浪费和不必要的通信开销。考虑到服务器使用者主要分布在A、B、C地区和国家&#xff0c;我打算对上一篇…

政安晨:示例演绎机器学习中(深度学习)神经网络的数学基础——快速理解核心概念(二){两篇文章讲清楚}

这一篇与上一篇是兄弟篇&#xff0c;意在通过两篇文章讲清楚深度学习中神经网络的数学基础&#xff0c;第一次看到这篇文章的小伙伴可以从上一篇文章看起&#xff08;包括搭建环境等等都在上一篇&#xff09;&#xff0c;上一篇链接如下&#xff1a; 政安晨&#xff1a;示例演…

【Linux】模块出入点与模块信息

&#x1f525;博客主页&#xff1a;PannLZ &#x1f38b;系列专栏&#xff1a;《Linux系统之路》 &#x1f94a;不要让自己再留有遗憾&#xff0c;加油吧&#xff01; 文章目录 1模块的入点和出点2模块信息 1模块的入点和出点 内核驱动程序都有入点和出点&#xff1a;前者对应…

《CSS 简易速速上手小册》第1章:CSS 基础入门(2024 最新版)

文章目录 1.1 CSS 语法和选择器&#xff1a;挑选你的画笔1.1.1 基础知识1.1.2 重点案例&#xff1a;创建一个响应式导航菜单1.1.3 拓展案例 1&#xff1a;为特定链接添加图标1.1.4 拓展案例 2&#xff1a;创建一个简单的问答折叠面板 1.2 盒模型的基础&#xff1a;构建你的乐高…

腾讯云4核8G服务器最大能承载多少用户在线?12M带宽

腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线&#xff1f;通用型-4核8G-180G-2000G&#xff0c;2000GB月流量&#xff0c;系统盘为180GB SSD盘&#xff0c;12M公网带宽&#xff0c;下载速度峰值为1536KB/s&#xff0c;即1.5M/秒&#xff0c;假设网站内页平均大小为60KB…

[架构之路-275]:五张图向你展现软件开发不仅仅是编码,而是一个庞大的系统工程

目录 一、软件开发是组织架构的一部分&#xff0c;是为业务服务的 二、软件开发是一个系统工程&#xff0c;需要组织各种组织内的资源 三、目标软件是一个复杂的系统 四、软件开发过程本身是一个系统工程 五、目标软件的测试验证是一个系统工程 一、软件开发是组织架构的一…