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程序中从半素数中计算出这两个素数,或者如果已经有了你通常定义的代码