学python的第十五天---简单数论

2023-11-02

模运算

在这里插入图片描述
(ab)mod m=(a mod m)(b mod m) mod m

一、刷题统计

在这里插入图片描述

a,b,n=map(int,input().split())
res=a*5+b*2
m=n//res*7
n=n%res
t=0
while n>0:
    if t<5:
        n-=a
        m+=1
    else:
        n-=b
        m+=1
print(m)

二、快速幂

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

b,p,k=map(int,input().split())
def quick_mi(b,p,k):
  n=p
  b%=k
  ans=1
  while n:
    if n&1==1:
      ans=(ans*b)%k
    b=(b*b)%k
    n>>=1
  return ans

print(quick_mi(b,p,k))

三、RSA解密

在这里插入图片描述
先用下段代码求解p、q

import math
n=1001733993063167141
k=int(math.sqrt(n))
for i in range(2,k+1):
    if n%i==0:
        print(i,n//i)
891234941 1123984201

第二步将de%((p-1)(q-1))的式子转换一下

n=1001733993063167141
d=212353
p=891234941
q=1123984201
tmp=(p-1)*(q-1)
print(tmp)
for i in range(2,n+1):
    now=i*tmp+1
    if now%d==0:
        print(now//d)
        break
1001733991047948000
823816093931522017

第三步,利用快速幂的代码求解x=c^e mod n

n=1001733993063167141
e=823816093931522017
c=20190324
def fastpow(a,b,mod):
    ans=1
    while b:
        if b&1:
            ans=ans*a%mod
        a=a*a%mod
        b>>=1
    return ans
print(fastpow(c,e,n))
579706994112328949

GCD

在这里插入图片描述

def gcd(a,b):
    if b==0:
        return a
    return gcd(b,a%b)

def gcd(a,b):
    return a if b==0 else gcd(b,a%b)

from math import gcd

LCM

最小公倍数
LCM=a*b/gcd(a,b)
在这里插入图片描述

def lcm(a,b):
	return a*b//gcd(a,b)

四、核桃的数量(最小公倍数)

在这里插入图片描述
这道题就是求a,b,c的最小公倍数

from math import *

def lcm(a,b):
    return a*b//gcd(a,b)

a,b,c=map(int,input().split())
ans=lcm(lcm(a,b),c)
print(ans)

五、Hankson 的趣味题

在这里插入图片描述
通过了80%,最后一个超时了,没有找到ac的python代码,如果有,麻烦大家发在评论群一下!

import math
from math import gcd

def lcm(a,b):
    return a*b//gcd(a,b)

n=int(input())
for i in range(n):
    a0,a1,b0,b1=map(int,input().split())
    ans=0
    for x in range(1,int(math.sqrt(b1)+1)):
        if b1%x==0:
            if gcd(x,a0)==a1 and lcm(x,b0)==b1:
                ans+=1
            y=b1//x
            if x==y:continue
            if gcd(y,a0)==a1 and lcm(y,b0)==b1:
                ans+=1
    print(ans)

六、寻找整数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
之前看别人的写法是找规律,感觉很复杂,但是感觉就是一直寻找他们的最小公倍数,然后累计步长很巧妙!

from math import *
mod=[0,0,1,2,1,4,5,4,1,2,9,0,5,10,11,14,9,0,11,18,9,11,11,15,17,9,23,20,25,16,29,27,25,11,17,4,29,22,37,23,9,1,11,11,33,29,15,5,41,46]
ans=2+mod[2]
k=2
for i in range(3,50):
    while True:
        if ans%i==mod[i]:
            k=lcm(k,int(i))
            break
        else:ans+=k#一直加他们的最小公倍数,一直到满足符合是其倍数
print(ans)
print(2022040920220409)

素数

在这里插入图片描述
在这里插入图片描述

七、笨小孩

在这里插入图片描述

import math
def check(u):
    if u<=1:
        return False
    for i in range(2,int(math.sqrt(u))+1):
        if u%i==0:
            return False
    return True

letter=[0]*26
s=input()
for i in range(len(s)):
    if "A"<=s[i]<"Z":
        letter[ord(s[i]) - ord('A')] += 1
    else:letter[ord(s[i])-ord('a')]+=1
letter.sort()
maxx=letter[-1]
for i in letter:
    if i==0:
        continue
    minn=i
    break
# print(maxx,minn)
if check(maxx-minn):
    print("Lucky Word")
    print(maxx-minn)
else:
    print("No Answer")
    print("0")

八、质数

在这里插入图片描述

N=10**6
primes=[]
bprime=[False]*N

def getPrimes(n):
    global primes
    global cnt
    bprime[0]=True
    bprime[1]=True
    for i in range(2,n+1):
        if not bprime[i]:
            primes.append(i)
            cnt+=1
            for j in range(i*2,n+1,i):
                bprime[j]=True

n=int(input())
cnt=0
getPrimes(n-1)

for p in primes:
    print(p,end=' ')
print()
print(cnt)

九、分解质因数

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学python的第十五天---简单数论 的相关文章

随机推荐

  • Endnote20 在word里插入参考文献 [快捷键Alt+2]

    https www yuque com duzh929 blog kq5u0u原文地址 墙裂建议看看新方法 更简单的新方法 有效解决Endnote20插入参考文献 Endnote20已经上线了 楼主迫不及待的用上了 发现EndnoteX9里
  • MYSQL注入 基础篇1.0

    就算命运不公 重重阻碍 但我在哪里跌倒就一定会在哪里爬起来 只要坚持不懈 那些嘲笑我的人迟早会被我笑死 SQL注入了解 SQL注入是什么 正常的Web端口访问 SQL注入是如何访问 为什么要深入了解SQL注入 SQL注入漏洞的根本原因 SQ
  • 【华为OD机试真题 python】密室逃生游戏【2022 Q4

    题目描述 密室逃生游戏 小强增在参加 密室逃生 游戏 当前关卡要求找到符合给定 密码K 升序的不重复小写字母组成 的箱子 并给出箱子编号 箱子编号为 1 N 每个箱子中都有一个 字符串s 字符串由大写字母 小写字母 数字 标点符号 空格组成
  • JS中的逻辑与和逻辑或

    JS中的逻辑或 符号 从字面上来说 只有前后都是 false 的时候才返回 false 否则返回 true console log 5 gt 6 6 gt 5 返回true 5 gt 6为false 但是 6 gt 5为true 所以返回
  • python-selenium页面定位不到元素

    1 查看是否有新的url打开 当前页面 mainHandle driver current window handle 获取所有的handle Handles driver window handles 循环遍历 找到不是当前页面的就切换
  • vue获取元素offsetTop,mounted获取不到offsetTop,获取元素距离页面顶边距离

    记录一下开发过程中遇到的坑 今天想做一个功能 当我评论完之后 页面跳到评论区顶部 于是就要获取到评论区距离页面顶部的距离 需要循环获取offsetTop来实现 但是在mounted阶段是无论如何都获取不到offsetParent的 不管是
  • C# 对数据库操作的函数总结

    SqlCommand ExecuteNonQuery 方法对连接执行 Transact SQL 语句并返回受影响的行数 可以写也可以读 1 可以使用ExecuteNonQuery 来执行目录操作 例如查询数据库的结构或创建诸如表等的数据库对
  • Unet 语义分割模型(Keras)

    文章目录 前言 一 什么是语义分割 二 Unet 1 基本原理 2 mini unet 3 Mobilenet unet 4 数据加载部分 参考 前言 最近由于在寻找方向上迷失自我 准备了解更多的计算机视觉任务重的模型 看到语义分割任务重U
  • BAT文件里注释符号

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在BAT文件批处理中注释的方式如下 1 注释内容 第一个冒号后也可以跟任何一个非字母数字的字符 2 rem 注释内容 不能出现重定向符号和管道符号 3 echo 注释内容
  • nginx配置https访问

    01 http https HTTP HyperText Transfer Protocol 超文本传输协议 是一种用于分布式 协作式和超媒体信息系统的应用层协议 简单来说就是一种发布和接收 HTML 页面的方法 被用于在 Web 浏览器和
  • 在ubuntu上安装splint

    lint lint是最著名的C语言工具之一 是由贝尔实验室SteveJohnson于1979在PCC PortableC Compiler 基础上开发的静态代码分析 一般由UNIX系统提供 工具介绍 与大多数C语言编译器相比 lint可以对
  • 试图理解 Decagon(二)具体方法

    4 图卷积 Deacgon 方法 综述 关系被表示为一个图 G V R 其中 节点N 蛋白质 药物 vi V 和标记的边 vi r vj r代表边的类型 分别由 蛋白质间的作用 某种药物 与其作用蛋白质间的关系 存在于某两种药物间的副作用关
  • SQLSERVER登录与JDBC连接事宜

    这半天都在帮副主席搞这个 比较最重要的两个点 SQLServer创建用户登录 https www cnblogs com vuenote p 10143434 html 使用JDBC连接SQLSERVER数据库 https www cnbl
  • C51单片机期末复习第八章单片机接口技术

    一 总线 传送同类信息的连线 三总线 地址总线AB 数据总线DB 控制总线CB 目录 ppt给的没啥用 乱还不全 8 1 单片机的系统总线 8 2 简单并行I O口扩展 8 3 可编程并行I O口扩展 8 4 D A转换与DAC0832应用
  • vue 自定义月日历日程组件(MSchedule)

    效果图 组件的使用 日程内容可以自定义 状态对应颜色可以自定义
  • vue 动态组件component标签

    vue 提供了一个内置的
  • python笔记:#013#高级变量类型

    高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 int 浮点型 float 布尔型 bool 真 True 非 0 数 非零即真 假 Fal
  • Ubuntu root账户登陆电脑

    vi etc pam d gdm autologin 屏蔽 auth required pam succeed if so user root quiet success vi etc pam d gdm password 屏蔽auth r
  • nextLine().split(“[\\s]“)的意思

    Scanner sc new Scanner System in String a sc nextLine split s 这句话的意思是 把输入的字符串以 s 为条件分割成一个String数组 s表示空格 回车 换行等空白符 当然 单表示
  • 学python的第十五天---简单数论

    模运算 一 刷题统计 二 快速幂 三 RSA解密 GCD LCM 四 核桃的数量 最小公倍数 五 Hankson 的趣味题 六 寻找整数 素数 七 笨小孩 八 质数 九 分解质因数 模运算 ab mod m a mod m b mod m