求python高手。求素数的乘机。题目如图

编程:验证第N个素数乘以他前面的所有素数=e**n。要求程序运行速度快。最好能小于2秒的。感激不尽,帮我把编程写下,我用的是3.2.1版本

程序如下,因为里面用来range,所以如果输入的数字太大的话会死掉。最好不要超过10000,
另外,你对英文原题的理解不对,不是第n个素数,而是素数n,
在__main__部分返回了小于n的所有素数列表,按照题目要求,打出了所有素数的log(n)之和,并除以n,验证随着n的增加,所得结果趋近于1.

'''
Created on 2011-9-19

@author: legendxx
'''
import math

def isPrime(x):
i=1
for i in range(int(math.sqrt(x)),0,-1):
if x%i==0:
break
if i==1:
return True
else:
return False

def GetPrimeList(x):
l = range(2,x)
i=0
while(i<len(l)):
if isPrime(l[i]):
for j in range(2, l[-1] / l[i]):
try:
l.remove(j*l[i])
except ValueError:
pass
i+=1
else:
l.remove(l[i])

return l

if __name__ == '__main__':
n=int(input("input the number n:"))

l=GetPrimeList(n)

sum=0
for x in l:
sum+=math.log(x)
print sum,l[-1],sum/l[-1]追问

题目是这样的:可能我理解错了,
There is a cute result from number theory that states that for sufficiently large n the product of the primes less than n is less than or equal to e**n and that as n grows, this becomes a tight bound (that is, the ratio of the product of the primes to e**n gets close to 1 as n grows)

追答

哦,那这样的话,n不一定要求是素数,最后一句话应该修改一下:
修改前: print sum,l[-1],sum/l[-1]
修改后:print sum,n,sum/n
打印素数乘积除以n,而不是除以最后一个素数。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-20
分太少,提个分 可以考虑下优化问题。

不过可以断定 你的这个等式不成立是肯定的,话说整数的乘积还是整数,怎么可能和e的n次方相同,除了e^0=1,其他都是小数
第2个回答  2011-09-21
你这里运行时间是和N的大小密切相关的。你这个2秒是多大时候的N对应的时间呢?
这里给出一个还算可以的列素数的方法(后面的计算我是抄legendxx的,特此声明):
def primes(x):
if x==1:
return []
elif x==2:
return [2]
elif x==3:
return [2,3]
else:
a=primes(int(x/2))
b=list(range(int(x/2)+1,x+1))
for i in a:
for j in range(len(b)-1,-1,-1):
if b[j]%i==0:
del b[j]
return a+b

import math

if __name__ == '__main__':
n=int(input("input the number n:"))

l=primes(n)

sum=0
for x in l:
sum+=math.log(x)
print n,sum/n
第3个回答  2011-09-20
a1*a2*...an=e**n
其中a1,a2 是素数
其中e的值是多少?追问

数学上不是有一个e。
loge =1:还有题目可能我理解错了,我发下吧:There is a cute result from number theory that states that for sufficiently large n the product of the primes less than n is less than or equal to e**n and that as n grows, this becomes a tight bound (that is, the ratio of the product of the primes to e**n gets close to 1 as n grows)

求python高手。求素数的乘机。题目如图
程序如下,因为里面用来range,所以如果输入的数字太大的话会死掉。最好不要超过10000,另外,你对英文原题的理解不对,不是第n个素数,而是素数n,在__main__部分返回了小于n的所有素数列表,按照题目要求,打出了所有素数的log(n)之和,并除以n,验证随着n的增加,所得结果趋近于1.'''Created on...

python求素数
python求素数:def is_prime(m):"""判断m是否素数"""for i in range(2,int(m**(1\/2))+1):if m % i == 0:return False else:return True 注意事项 定义一个函数并使用input进行范围的输入,同时将将求得的素数保存在num数组中去,便于求得在该范围内素数的总数以及对应的具体值,同时...

python1到100之间的素数有多少(2023年最新分享)
用python求1至100内所有素数并统计个数#!\/usr\/bin\/python -*-coding:UTF-8-*- b=0 forainrange(1,100):k=0 foriinrange(2,a):ifa%i==0:k+=1 ifk==0:printa b+=1 print"素数一共有",b,"个"素数:一个数只能被1和它本身整除,则该数即为素数 用python求100以内的素数#求100...

求素数的Python代码,求讲解
对于空列表,not [] 返回True 原来的代码中, if not后面是一个临时生成的列表, 如果这个列表为空则表明x没有任何>=2的因子,x必是素数,于是添加x 到主列表.[x for x in range(1, 100) if express ]这样的语句仅仅在express是True才会添加x ...

python求素数
python求素数如下:Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质。使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新...

python中如何编程求1到100之间的素数
1、新建python文件,testprimenum.py;2、编写python代码,求1到100之间的素数;list1 = []i = 2 for i in range(2,101):j = 2 for j in range (2,i):if i%j == 0:break else:list1.append(i)print(list1)3、窗口中右击,选择‘在终端中运行Python文件’;4、查看执行结果,1-...

如何用python求友素数
求素数的方法有很多种,以下是其中两种常见的方法:方法一:暴力枚举暴力枚举法是最简单的求素数方法之一。其基本思想是:对于每一个待判断的数n,枚举2到n-1的所有整数,看是否能整除n。如果找到了一个除n以外的因数,那么n就不是素数,否则n就是素数。以下是使用暴力枚举法求解素数的代码:def is_...

python判断有多少素数(python素数判断)
本文目录一览:1、python判断100-200之间有多少个素数,并输出素数的个数2、python求素数的个数3、python中如何判断素数4、判断101-200之间有多少个素数,并输出所有素数pythonpython判断100-200之间有多少个素数,并输出素数的个数判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明...

Python求素数问题定义issus函数
pythonCopy codedef is_prime(n): if n <= 1: return False for i in range(2, int(n**0.5)+1): if n % i == 0: return False return True 这个函数接受一个整数作为输入,并返回一个布尔值,表示输入的数是否为素数。函数使用了一个常见的算法,即遍历从 2 到 $\\sq...

python中如何编程求1到100之间的素数
!\/usr\/bin\/python -*- coding:UTF-8 -*- 求素数 list=[]i=2 for i in range (2,100):j=2 for j in range(2,i):if(i%j==0):break else:list.append(i)print(list)

相似回答