Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 有解决半素数的Python程序吗?_Python 2.7 - Fatal编程技术网

Python 2.7 有解决半素数的Python程序吗?

Python 2.7 有解决半素数的Python程序吗?,python-2.7,Python 2.7,所以我有一个公式,解半素数比把每对素数反复相乘要快!因此,您不必使用长时间的猜测和检查(如下所示),而是使用基本除法 semi prime = 15 ... 2 * 3, 2 * 5, 2 * 7, 3 * 5 ... primes 3 and 5 这就是我的方式 semi prime = 15 ... 2 / 15, 3 / 15 ... primes ... primes 3 and 5 在这里,它不会改变很多长度,但在较大的半素数中会改变。但现在我想知道是否有一个python程序可以为

所以我有一个公式,解半素数比把每对素数反复相乘要快!因此,您不必使用长时间的猜测和检查(如下所示),而是使用基本除法

semi prime = 15 ... 2 * 3, 2 * 5, 2 * 7, 3 * 5 ... primes 3 and 5
这就是我的方式

semi prime = 15 ... 2 / 15, 3 / 15 ... primes ... primes 3 and 5

在这里,它不会改变很多长度,但在较大的半素数中会改变。但现在我想知道是否有一个python程序可以为我做到这一点?到目前为止,我还不能做一个,但我正在努力

没关系,我知道了

import math

running = True

prime_1 = 0
prime_2 = 0
semi_prime = 0

n = 0

semi_prime = input('Enter Semi-Prime: ')

while running:

    if prime_1 * prime_2 == semi_prime:

        print('your 2 primes are')
        print([prime_1])
        print([prime_2])
        running = False

    else:

        n += 1

        def is_prime(number):
              if number < 2:
                    return False
              if number % 2 == 0:
                    return False
              else:
                    for i in range(3, number):
                          if not number % i:
                                return False
                    return True



        #This array stores all the prime numbers found till n
        primes = []

        for i in range(100000):
              if is_prime(i):
                    primes.append(i)
              if len(primes) == n:
                    break

        print("next prime is " + str(primes[n-1]))

        prime_1 = primes[n-1]
        prime_2 = semi_prime / primes[n-1] 
导入数学
运行=真
素数1=0
素数_2=0
半素=0
n=0
半素数=输入('输入半素数:')
运行时:
如果素数_1*素数_2==半素数:
打印('你的两个素数是')
打印([prime_1])
打印([prime_2])
运行=错误
其他:
n+=1
def是_素数(数字):
如果数字小于2:
返回错误
如果数字%2==0:
返回错误
其他:
对于范围内的i(3,编号):
如果不是编号%i:
返回错误
返回真值
#此数组存储在n之前找到的所有素数
素数=[]
对于范围内的i(100000):
如果是_素数(i):
素数。附加(i)
如果len(素数)==n:
打破
打印(“下一个素数是”+str(素数[n-1]))
素数_1=素数[n-1]
素数2=半素数/素数[n-1]

没关系,我想出来了

import math

running = True

prime_1 = 0
prime_2 = 0
semi_prime = 0

n = 0

semi_prime = input('Enter Semi-Prime: ')

while running:

    if prime_1 * prime_2 == semi_prime:

        print('your 2 primes are')
        print([prime_1])
        print([prime_2])
        running = False

    else:

        n += 1

        def is_prime(number):
              if number < 2:
                    return False
              if number % 2 == 0:
                    return False
              else:
                    for i in range(3, number):
                          if not number % i:
                                return False
                    return True



        #This array stores all the prime numbers found till n
        primes = []

        for i in range(100000):
              if is_prime(i):
                    primes.append(i)
              if len(primes) == n:
                    break

        print("next prime is " + str(primes[n-1]))

        prime_1 = primes[n-1]
        prime_2 = semi_prime / primes[n-1] 
导入数学
运行=真
素数1=0
素数_2=0
半素=0
n=0
半素数=输入('输入半素数:')
运行时:
如果素数_1*素数_2==半素数:
打印('你的两个素数是')
打印([prime_1])
打印([prime_2])
运行=错误
其他:
n+=1
def是_素数(数字):
如果数字小于2:
返回错误
如果数字%2==0:
返回错误
其他:
对于范围内的i(3,编号):
如果不是编号%i:
返回错误
返回真值
#此数组存储在n之前找到的所有素数
素数=[]
对于范围内的i(100000):
如果是_素数(i):
素数。附加(i)
如果len(素数)==n:
打破
打印(“下一个素数是”+str(素数[n-1]))
素数_1=素数[n-1]
素数2=半素数/素数[n-1]

您想要的是对数字进行因式分解,下面是一个如何进行因式分解的示例

def prime_generator(n):
    """produce all the prime numbers less or equal to n"""
    #put here the code for this

def prime_factorization(n):
    """return a list of with the all prime factors of n including their multiplicity""" 
    result=[]
    for p in prime_generator(n):
        while n%p==0: #while p divide n...
            result.append(p)
            n = n//p
        if n<=1:
            break
     return result

def is_semi_prime(n):
    factors = prime_factorization(n)   
    if len(factors) == 2:
        print n, "is a semi prime with those prime factors:", factors
    else:
        print n, "is not a semi-prime"

is_semi_prime( input("enter a number: ") )
我认为这是您试图解释的算法,正如您所看到的,不需要搜索第二个素数(
p2
),只有第一个(
p1
)和另一个(如果存在的话)会自然出现

我把这两个功能留作练习

对于
is_prime
您可以使用简单的试算法,就像您在回答中所做的那样,顺便说一句,它无法将2识别为prime,或者更强大的,如()(您可以在中找到一个工作版本)或


对于
prime_生成器
,您可以使用,正如我在Eratostenes筛之前提到的,或者使用无限的prime生成器。例如,您可以在以下问题中找到方法:和。后者是我最喜欢的

您想要的是将数字分解,下面是一个如何分解的示例

def prime_generator(n):
    """produce all the prime numbers less or equal to n"""
    #put here the code for this

def prime_factorization(n):
    """return a list of with the all prime factors of n including their multiplicity""" 
    result=[]
    for p in prime_generator(n):
        while n%p==0: #while p divide n...
            result.append(p)
            n = n//p
        if n<=1:
            break
     return result

def is_semi_prime(n):
    factors = prime_factorization(n)   
    if len(factors) == 2:
        print n, "is a semi prime with those prime factors:", factors
    else:
        print n, "is not a semi-prime"

is_semi_prime( input("enter a number: ") )
我认为这是您试图解释的算法,正如您所看到的,不需要搜索第二个素数(
p2
),只有第一个(
p1
)和另一个(如果存在的话)会自然出现

我把这两个功能留作练习

对于
is_prime
您可以使用简单的试算法,就像您在回答中所做的那样,顺便说一句,它无法将2识别为prime,或者更强大的,如()(您可以在中找到一个工作版本)或


对于
prime_生成器
,您可以使用,正如我在Eratostenes筛之前提到的,或者使用无限的prime生成器。例如,您可以在以下问题中找到方法:和。后者是我最喜欢的

嗯,对数字进行因子分解,然后检查它有多少因子?好吧,那就这样做吧。。。问题是什么?检查是一个数字是一个半素数吗?或者生成一个包含所有半素数的列表?抱歉,我没有解释它是如何工作的。您需要4个变量(n、素数1、数和素数2),将n设置为1,将number设置为n个素数,将素数1设置为number,并将素数2设置为半素数/素数1。若你们用素数1除以半素数,它是一个十进制数,然后把n加1,使这个数变成下一个素数。重复这个步骤,直到素数2作为一个整数出现。一旦它完成,素数1是你的第一个素数,素数2是你的第二个素数,如果你想,你可以复制并粘贴这段代码到你的环境中,然后进行测试。问题是,我如何在python程序中从半素数中计算出这两个素数,或者如果已经有itmmm的代码,对数字进行因子分解,然后检查它有多少因子?好吧,那么就这样做吧。。。问题是什么?检查是一个数字是一个半素数吗?或者生成一个包含所有半素数的列表?抱歉,我没有解释它是如何工作的。您需要4个变量(n、素数1、数和素数2),将n设置为1,将number设置为n个素数,将素数1设置为number,并将素数2设置为半素数/素数1。若你们用素数1除以半素数,它是一个十进制数,然后把n加1,使这个数变成下一个素数。重复这个步骤,直到素数2作为一个整数出现。一旦它完成,素数1是你的第一个素数,素数2是你的第二个素数,如果你愿意,你可以将这段代码复制粘贴到你的环境中并进行测试。问题是我如何在python程序中从半素数中计算出这两个素数,或者如果已经有了你通常定义的代码