精华内容
下载资源
问答
  • python素数质数分解

    千次阅读 2020-05-03 13:25:52
    python素数质数分解 python小白,大佬请忽略… 素数(质数):除了1和和它本身,没有其他的因数的数。 输入整数n,进行素数分解。 #素数只能被1和它本身整除,不能再被其它数整除,能被2整除的都不是素数 try: ...

    python素数(质数)分解

    python小白,大佬请忽略…

    素数(质数):除了1和和它本身,没有其他的因数的数。
    输入整数n,进行素数分解。

    #素数只能被1和它本身整除,不能再被其它数整除,能被2整除的都不是素数
    try:
        n = 0
        while True:
            n = int(input("n="))
            if n >=1:
                break
    except (ValueError):
        print("请输入整数")
    i = 2
    frist = True
    #定义为True
    while n>=i:
        while n%i==0:
            if frist==True:
                #当第一次检测,为True时,
                print("=",i,end="")
                #打印=号
                frist = False
                #这时将frist置为False,否则一直是True,因为上面初始值是True
            else:
                print("*",i,end="")
                #打印*号
            n=n//i
        i += 1
    
    展开全文
  • 每个问题都包含基础方法(重点讲解核心问题),和进阶版本(完善程序)素数判断基础方法1.0知识补充:1)素数是除了1和它本身不能被其他正整数整除的正整数,1不是素数也不是合数。2) %是Python取除法余数的计算,...

    本文介绍偏向新手,解释比较详细,如果是大佬嫌我前面的知识补充和思路分析烦人的话,可以直接跳过去看代码部分。

    每个问题都包含基础方法(重点讲解核心问题),和进阶版本(完善程序)

    素数判断基础方法1.0

    知识补充:

    1)素数是除了1和它本身不能被其他正整数整除的正整数,1不是素数也不是合数。

    2) %是Python取除法余数的计算,例如5%2=1

    3)else语句的特殊用法:如果else和循环语句开头对齐,说明当循环中没有碰到break语句,就会执行循环后面的else语句,否则就不会执行。

    思路分析:

    我们要判断一个正整数n是不是一个素数,可以从2开始依次检查,到n-1为止,看能不能找到它除了1和本身外的一个因数。如果找到了,那他就不是素数。如果找不到他就是素数。

    用for in循环,配合range函数实现由2到n-1的检索,i表示每一个可能存在的因数

    对于每一个可能的因数i,使用if条件判断。判断标准是n除以i是否有余数

    如果找到,说明这个数不是素数,break语句跳出循环

    如果从2到n-1都没有找到因数,则说明是素数,结束循环并且执行else语句

    代码参考

    n=int(input("请输入整数:")) #输入整数,并且转化为整数类型

    for i in range(2,n): #for in 循环(range函数左取右不取,从2到n-1)

    b=n%i # %表示取得除法计算的余数

    if b==0: #判断标准,n除以这个数,是否有余数

    print("不是质数")

    break

    else: # else放在这个为止表示如果上面的 for in 循环当循环中没有碰到break语句,就会执行循环后面的else语句,否则就不会执行。

    print("是质数") #没有碰到break语句则执行else语句

    素数判断程序进阶2.0

    在基础版本我们忽略了如果输入的是"1",是"2.5",甚至是"火鸡"等其他类型数据输入时的处理

    输入了n=1,或者n等于一个小数的情况可以用if条件判断来处理,如果输入的不是1,而且大于0,而且数据类型数型数int则运行程序,不然的话就执行相应的输入提示

    如果输入了不是数字的数据类型例如"狮子",则会报错ValueError

    所以在最外面套上错误检验的 try except语句来解决

    它的格式是

    try:

    不报错执行的程序

    except+报错类型:

    报错时执行的程序

    try: #不报错时候执行程序

    n=int(input("请输入整数:"))

    if n !=1 and type(n)==int and n>1: #对输入数据的条件判断 ,如果是正整数就执行程序

    for i in range(2,n):

    b=n%i

    if b==0:

    print("不是质数")

    break

    else:

    print("是质数")

    elif n==1: #如果是1的提示

    print("1既不是素数又不是合数")

    else: print("请输入正确的正整数") #如果是其他数值类型的提示

    except ValueError:

    print("请输入正确的正整数") #报错时候的输入提示

    素因数分解基础方法1.0

    知识补充(123上面的素因数判断补充过了,看过了的朋友可以跳过)

    1)素数是除了1和它本身不能被其他正整数整除的正整数,1不是素数也不是合数。

    2) %是Python取除法余数的计算,例如5%2=1

    3)else语句的特殊用法:如果else和循环语句开头对齐,说明当循环中没有碰到break语句,就会执行循环后面的else语句,否则就不会执行。

    4)//是python的整除计算,例如7//2=3

    5)while True 会使程序开启不限次数的循环,需要通过设置条件来跳出循环。

    思路分析:

    将一个整数n分解成素因数,例如输入20,输出[2,2,5]意味着我们需要将n的素因数从小到大一个个找出来放进一个列表里面。

    找第一个素因数可以用for in循环和range函数实现,从2到n检索。对于每一轮循环中的i,通过n除以i余数是否为0来判断是否是素因数,如果是素因数则放入列表。

    以此基础为了找齐n所以因数,需要在外面套一层while循环,并且在每次找到素因数之后改变n的值,

    例如开始n=20 list1=[],

    第一轮while循环 n=10 素因数[2],

    第二轮n=5 素因数[2,2],

    第三轮n=1 素因数[2,2,5]

    第四轮n=1不符合条件,由于for in循环没有碰到break,则执行与for in 循环对其的while语句,跳出while循环。

    代码参考

    n=int(input("请输入整数:")) #输入一个整数

    list1=[] #定义一个空列表存放素因数

    while True: #开启while循环

    for i in range(2,n+1): #range函数左取右不取,从2检索到n

    b=n%i #计算余数

    if b ==0: #条件判断,如果余数是0,i就是n的一个素因数

    list1.append(i) #将这个素因数放进列表

    n=n//i #将n的值除以这个素因数,即将这个素因数去掉

    break #结束循环,进入下一轮while循环

    else:

    break #若for in 循环没有执行break,即n的素因数已经取完,则结束while循环

    print(list1)

    素因数分解方法进阶2.0

    对于基础版本1.0里面没有处理的问题,输入1或者其他不是整数的数值时候的解决方法同上面素数判断的进阶版讲解的内容一样,使用if条件判断,type语句,和try except语句可以实现

    try: #不报错时候执行程序

    n=int(input("请输入整数:"))

    list1=[]

    if n !=1 and type(n)==int and n>1: #如果输入的是不是1的正整数则进行素因数分离

    while True:

    for i in range(2,n+1):

    b=n%i

    if b ==0:

    list1.append(i)

    n=n//i

    break

    else:

    break

    print(list1)

    elif n==1: #如果是1的提示

    print("1没有素因数")

    else: print("请输入正确的正整数") #如果是其他数值类型的提示

    except ValueError:

    print("请输入正确的正整数") #报错时候的输入提示

    展开全文
  • 每个问题都包含基础方法(重点讲解核心问题),和进阶版本(完善程序)素数判断基础方法1.0知识补充:1)素数是除了1和它本身不能被其他正整数整除的正整数,1不是素数也不是合数。2) %是Python取除法余数的计算,...

    4da0ab1238039faeb9b6f29d28bb1149.png

    本文介绍偏向新手,解释比较详细,如果是大佬嫌我前面的知识补充和思路分析烦人的话,可以直接跳过去看代码部分。

    每个问题都包含基础方法(重点讲解核心问题),和进阶版本(完善程序)

    素数判断基础方法1.0

    知识补充:

    1)素数是除了1和它本身不能被其他正整数整除的正整数,1不是素数也不是合数。

    2) %是Python取除法余数的计算,例如5%2=1

    3)else语句的特殊用法:如果else和循环语句开头对齐,说明当循环中没有碰到break语句,就会执行循环后面的else语句,否则就不会执行。

    思路分析:

    我们要判断一个正整数n是不是一个素数,可以从2开始依次检查,到n-1为止,看能不能找到它除了1和本身外的一个因数。如果找到了,那他就不是素数。如果找不到他就是素数。

    用for in循环,配合range函数实现由2到n-1的检索,i表示每一个可能存在的因数

    对于每一个可能的因数i,使用if条件判断。判断标准是n除以i是否有余数

    如果找到,说明这个数不是素数,break语句跳出循环

    如果从2到n-1都没有找到因数,则说明是素数,结束循环并且执行else语句

    代码参考

    n=int(input("请输入整数:"))  #输入整数,并且转化为整数类型
      
    
    for i in range(2,n):          #for in 循环(range函数左取右不取,从2到n-1)
            b=n%i                 # %表示取得除法计算的余数
            if b==0:              #判断标准,n除以这个数,是否有余数
               print("不是质数")
               break
    else:                         # else放在这个为止表示如果上面的 for in 循环当循环中没有碰到break语句,就会执行循环后面的else语句,否则就不会执行。
    
        print("是质数")           #没有碰到break语句则执行else语句

    素数判断程序进阶2.0

    在基础版本我们忽略了如果输入的是"1",是"2.5",甚至是"火鸡"等其他类型数据输入时的处理

    输入了n=1,或者n等于一个小数的情况可以用if条件判断来处理,如果输入的不是1,而且大于0,而且数据类型数型数int则运行程序,不然的话就执行相应的输入提示

    如果输入了不是数字的数据类型例如"狮子",则会报错ValueError

    所以在最外面套上错误检验的 try except语句来解决

    它的格式是

    try:

    不报错执行的程序

    except+报错类型:

    报错时执行的程序

    try:                                     #不报错时候执行程序
        n=int(input("请输入整数:"))
        if n !=1 and type(n)==int and n>1:  #对输入数据的条件判断 ,如果是正整数就执行程序
            for i in range(2,n): 
                b=n%i                 
                if b==0:
                    print("不是质数")
                    break
            
            else:    
                print("是质数")   
    
        elif n==1:                           #如果是1的提示
            print("1既不是素数又不是合数")
        else: print("请输入正确的正整数")     #如果是其他数值类型的提示
    
    except ValueError:
        print("请输入正确的正整数")            #报错时候的输入提示

    素因数分解基础方法1.0

    知识补充(123上面的素因数判断补充过了,看过了的朋友可以跳过)

    1)素数是除了1和它本身不能被其他正整数整除的正整数,1不是素数也不是合数。

    2) %是Python取除法余数的计算,例如5%2=1

    3)else语句的特殊用法:如果else和循环语句开头对齐,说明当循环中没有碰到break语句,就会执行循环后面的else语句,否则就不会执行。

    4)//是python的整除计算,例如7//2=3

    5)while True 会使程序开启不限次数的循环,需要通过设置条件来跳出循环。

    思路分析:

    将一个整数n分解成素因数,例如输入20,输出[2,2,5]意味着我们需要将n的素因数从小到大一个个找出来放进一个列表里面。

    找第一个素因数可以用for in循环和range函数实现,从2到n检索。对于每一轮循环中的i,通过n除以i余数是否为0来判断是否是素因数,如果是素因数则放入列表。

    以此基础为了找齐n所以因数,需要在外面套一层while循环,并且在每次找到素因数之后改变n的值,

    例如开始n=20 list1=[],

    第一轮while循环 n=10 素因数[2],

    第二轮n=5 素因数[2,2],

    第三轮n=1 素因数[2,2,5]

    第四轮n=1不符合条件,由于for in循环没有碰到break,则执行与for in 循环对其的while语句,跳出while循环。

    代码参考

    n=int(input("请输入整数:"))  #输入一个整数
    list1=[]                    #定义一个空列表存放素因数
    
    
    while True:                  #开启while循环
        for i in range(2,n+1):   #range函数左取右不取,从2检索到n
            b=n%i                #计算余数
            if b ==0:            #条件判断,如果余数是0,i就是n的一个素因数
                list1.append(i)  #将这个素因数放进列表
                n=n//i           #将n的值除以这个素因数,即将这个素因数去掉
                break            #结束循环,进入下一轮while循环
        else:
            break                #若for in 循环没有执行break,即n的素因数已经取完,则结束while循环
    
    print(list1)   

    素因数分解方法进阶2.0

    对于基础版本1.0里面没有处理的问题,输入1或者其他不是整数的数值时候的解决方法同上面素数判断的进阶版讲解的内容一样,使用if条件判断,type语句,和try except语句可以实现

    try:                                     #不报错时候执行程序
        n=int(input("请输入整数:"))
        list1=[]                    
        if n !=1 and type(n)==int and n>1: #如果输入的是不是1的正整数则进行素因数分离
    
            while True:                  
                for i in range(2,n+1):   
                    b=n%i               
                    if b ==0:            
                        list1.append(i)  
                        n=n//i           
                        break            
                else:
                    break                
    
    
            print(list1)   
    
        elif n==1:                           #如果是1的提示
            print("1没有素因数")
        else: print("请输入正确的正整数")     #如果是其他数值类型的提示
    
    except ValueError:
        print("请输入正确的正整数")            #报错时候的输入提示
    展开全文
  • python程序分解质因数

    2018-05-01 22:09:55
    质因数(素因数或质因子)在数论里是指能整除给定正整数的质数,这里通过运行python程序分解质因数
  • Python因数分解

    千次阅读 2017-09-27 09:50:29
    分解质因数也称分解素因数)求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。分解质因数的算式叫短除法,和除法的性质差不多,还可以用来求多个个数的公因式。 下面利用生成随机数分解因数的...

    欢迎访问我的网站:omegaxyz.com

    把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数。
    分解质因数只针对合数。(分解质因数也称分解素因数)求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。分解质因数的算式叫短除法,和除法的性质差不多,还可以用来求多个个数的公因式。
    下面利用生成随机数分解因数的方法:

    from random import randint
    from math import sqrt
    
    def factoring(n):
        '''对大数进行因数分解'''
        if not isinstance(n, int):
            print('You must give me an integer')
            return
        #开始分解,把所有因数都添加到result列表中
        result = []
        for p in primes:
            while n!=1:
                if n%p == 0:
                    n = n/p
                    result.append(p)
                else:
                    break
            else:
                result = map(str, result)
                result = '*'.join(result)
                return result
        #考虑参数本身就是素数的情况
        if not result:
            return n
    
    testData = [randint(10, 100000) for i in range(50)]
    #随机数中的最大数
    maxData = max(testData)
    #小于maxData的所有素数
    primes = [ p for p in range(2, maxData) if 0 not in
            [ p% d for d in range(2, int(sqrt(p))+1)] ]
    
    for data in testData:
        r = factoring(data)
        print(data, '=', r)
        #测试分解结果是否正确
        print(data==eval(r))
    展开全文
  • python练习1 质数分解

    千次阅读 2014-08-14 11:46:12
    写一个函数接受一个int型参数,判断改参数是否为质数,返回布尔值。写一个函数接受一个int型参数,返回该参数的所有因子,返回一个列表。利用上面两个函数编写一个函数,接受一个int型参数,返回这个参数的最大质...
  • python因子分解*

    2020-02-26 13:38:34
    数的因子分解 """ name: wzl date: 2020/1/10 task: 数的因子分解 """ import math def is_prim(num): #判断素数 is_prime = True for i in range(2,int(math.sqrt(num))+1): if num%i==0: is...
  • Python - 分解因子

    2019-09-09 13:29:03
    1. 素数判断 ----- 分解因子 ----- 分解质因子 2. 最大公因数(gcd) 3. 最大公因字符串 ----- 最小公因字符串 素数: #data def func1(data): if not[x for x in range(2,int(data**0.5+1)) if not data%x] ...
  • Python实现分解质因数

    千次阅读 2019-11-30 14:49:27
    每个合数都可以写成几个质数相乘的形式...(分解质因数也称分解素因数)求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。分解质因数的算式叫短除法,和除法的性质差不多,还可以用来求多个个数的...
  • 基于python分解质因数算法

    千次阅读 2020-05-14 21:43:50
    基于python分解质因数的算法实现 今天在准备复试的时候突发奇想,如果老师要求写一个基于分解质因数的算法怎么办,于是我对算法的实现做出了思考,大致分为一下三部分 实现质数检测 实现迭代器 实现错误过滤 ...
  • python3 分解质因数

    2018-06-20 23:46:00
    python3 分解质因数 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan num = int(input("请输入一个合数:")) n = num list1 = [] #存放质因数 for j in range(int(n/2)+1): for i ...
  • python素数筛选法浅析

    2020-12-23 19:08:08
    在加密应用中起重要的位置,比如广为人知的RSA算法中,就是基于大整数的因式分解难题,寻找两个超大的素数然后相乘作为密钥的。一个比较常见的求素数的办法是埃拉托斯特尼筛法(the Sieve of Eratosthenes) ,说简单...
  • python实现整数分解质数的算法

    千次阅读 2017-03-05 11:38:41
    之前面试碰到过一道题,要求将整数分解质数,用c实现看上去较为繁琐,最近学习python,拿这道题练练手,相对于c而言,代码非常简洁。 废话不多说,先上源码。 def isnotin(meta , list): for ec in list: if ...
  • Python3 分解质因数

    千次阅读 2019-04-19 09:59:09
    题目 将一个整数分解质因数。例如:输入90,打印出90=2335。 程序分析 根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数。 target=int(input(‘输入一个整数:’)) print(target,’= ‘,end...
  • 在加密应用中起重要的位置,比如广为人知的RSA算法中,就是基于大整数的因式分解难题,寻找两个超大的素数然后相乘作为密钥的。一个比较常见的求素数的办法是埃拉托斯特尼筛法(the Sieve of Eratosthenes),说简单...
  • python 大数质因数分解 数字较小时: def is_prime(number): for i in xrange(2, int(math.sqrt(number))+2): if number %i == 0 and number !=i: return False return True 数字较大时: 判断是否为质数:...
  • 概述今天主要分享一个关于分解质因数的实例,判断的逻辑稍微多了点.../usr/bin/python# 需求:将一个整数分解质因数。例如:输入90,打印出90=233*5#思路:根本不需要判断是否是质数,从2开始向数本身遍历,能整除的...
  • Python分解质因数 num1 = int(input("请输入一个正整数,回车结束\n")) print("%d ="%(num1),end=" ") #原输入数字输出算式 num2 = 2 #最小的质数2 num3 = 2 #最小的质数2 while num2 != num1: #循环到最后需要把...
  • python3 分解质因子

    千次阅读 2018-07-11 15:22:18
    def isPrime ( num ) : if num == 1 : return False else : for ...关键逻辑:能整出质数 num = num // j list.append ( j ) break list.append ( num ) print ( list )
  • 2019.09.21更新:之前写...----------------------------------------------------------------------------------------------最近正在学习python ,前几天碰到个问题让求解素数对(质数对)个数:让我们定义dn为:...
  • 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。# !/usr/bin/env python# -*- coding:utf-8 -*-# Author:Hiuhung Wannum = input("请输入一个合数:")if num.isdigit():num = int(num)else:print("输入...
  • 质数(Prime Number),又称素数,是指大于1的自然数中,除了1和它本身,没有其他因数的数 2. 代码 number = int(input('请输入一个数:')) def is_prime(num): if num > 1: for i in range(2, num): if num...
  • # print('%d 等于 %d * %d' % (num,i,j)) # 能被分解因子,则不是质数 break # 跳出当前循环 else: # 循环的 else 部分 print(num, '是一个质数') s() >>>... >>>cost 0.06467127799987793
  • 问题描述 求出区间[a,b]中所有整数的质因数分解。 输入格式 输入两个整数a,b。 输出格式 每行输出一个数的分解,形如k=a1a2a3…(a1<...先筛出所有素数,然后再分解。 数据规模和约定 2<=a<=b...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,332
精华内容 1,332
关键字:

python素数分解

python 订阅