首页 > 编程语言 >费马素性检验(python实现)

费马素性检验(python实现)

时间:2024-03-06 21:44:06浏览次数:31  
标签:return 素性 python fast print mod def 费马

费马素性检验:

给定奇整数n>=3和安全参数t

1、随机选取整数b,(b,n)=1,2<=b<=n-2

2、计算r=b的n-1次方(modn)

3、如果r!=1,则n是合数

4、上述过程重复t次

以下是python代码,如发现错误,请跟博主联系

import random
#n>=3且n是奇整数
n=int(input())
t=int(input())
def gcd(a,b):
    while b != 0:
        a, b = b, a % b
    return a
def b():#找到b
    a=random.randint(2,n-2)
    if gcd(a,n)==1:
        return a
    else:
        return b()
def fast_mod(x, n, m):#模重复平方法
    a = 1
    b = x
    while True:
        temp = n
        if n % 2 == 1:
            a = a * b % m
        b = b * b % m
        n = n // 2
        if temp < 1:
            return a
def fermat():
    r = fast_mod(b(), n - 1, n)
    if r!=1:
        print('n是合数')
    else:
        for x in range(t):
            r=fast_mod(b(),n-1,n)
            if r!=1:
                print('n是合数')
                return
        a=1-1/2**t
        print('n是素数的可能性大于%.2f'%a)
fermat()

 

标签:return,素性,python,fast,print,mod,def,费马
From: https://www.cnblogs.com/cs0513/p/18057670

相关文章

  • 零基础python编程基础
    1.计算机:脑力劳动工具                                       2. ......
  • python控制windows命令行程序
    有一些现成的库,比如WExpect,是开源的,在github上可以搜索到.但是,不知道为什么,在我自己的笔记本上不能正常工作.而其源码也比较多,懒得定位了.于是自己实现了一个,用法如下.启动和停止命令行importmy_cmdascmdcmd.start()cmd.stop()prompt命令行提示符匹......
  • Python中那些简单又好用的特性和用法
    Python作为我的主力语言帮助我开发了许多DevOps运维自动化系统,这篇文章总结几个我在编写Python代码过程中用到的几个简单又好用的特性和用法,这些特性和用法可以帮助我们更高效地编写Python代码1.链式比较x=5y=10z=15ifx<y<z:print("xislessthanyandy......
  • qgis 3.30 python开发环境搭建
     1.使用mamba加速conda下载qgiscondainstall-cconda-forge-nbasemamba2.创建qgis虚拟环境condacreate-nqgispython=3.11condaactivateqgis(管理员CMD)mambainstall-cconda-forgeqgis=3.30.0mambainstall-cconda-forgerasteriomambainstall-cco......
  • 【Python基础】Python 函数返回多个值和函数注解
    [本文出自天外归云的博客园]Python函数返回多个值和函数注解在Python中,函数可以返回多个值。这在某些情况下很有用,因为它允许函数一次性返回多个相关联的结果。Python使用元组(tuple)来实现这一特性。函数返回多个值示例下面是一个示例函数,它接受一个整数和一个字符串作为......
  • Python涉及路径相关的知识点
    脚本中的路径信息print('__file__:',__file__)#脚本的位置print('os.path.abspath(__file__)::',__file__)#脚本的绝对路径(和上面的一般情况下是一样的)print('os.path.abspath(__file__):',os.path.abspath(__file__))SCRIPT_DIR=os.path.dirname(os.path.abspat......
  • Python list列表pop弹出内容del移除内容结果不对错误
    前言全局说明Pythonlist列表pop弹出内容del移除内容结果不对一、功能需求一个list列表,内容是1-9,用for循环打印,打印过的值,从列表中删除二、输出结果不对,代码有问题文件名:test.py#!/usr/bin/envpython3#coding:UTF-8#-*-coding:UTF-8-*-lists_1=['a','b']......
  • Python函数每日一讲 - hex()
    引言在Python编程中,处理十六进制数据是一项常见的任务。hex()函数就是Python中用于将整数转换为十六进制字符串的函数。本文将深入介绍hex()函数的使用方法,并通过实例演示其在实际应用中的作用,帮助大家更好地掌握这一工具。语句概览hex()函数是Python内置函数之一,用于将整数转......
  • Python-动态类型
    动态类型在Python中,类型是在运行时自动确定的,而不是通过代码声明,即Python没有必要事先声明变量。1.变量、对象和引用变量创建:一个变量在代码第一次给它赋值时就创建了它,之后的赋值将会改变已创建的变量的值;Python在代码运行之前会先检测变量名,是最初的赋值操作在创建变量。变......
  • 使用python编程实现多个csv文件数据的合并和输出
    具体代码importpandasaspdimportosdf01=pd.read_csv("D:\\12140\\Desktops\\111\\t11.csv",encoding='utf-8',dtype='str')df02=pd.read_csv("D:\\12140\\Desktops\\111\\t12.csv",encoding='utf-......