Crossin的编程教室

标题: 输出质数 [打印本页]

作者: crossin先生    时间: 2013-7-25 01:08
标题: 输出质数
质数,又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
如:2, 3, 5, 7, 11....

编写一个输出质数的程序。

输入:n

输出:0~n之间所有的质数。

例:
20
2 3 5 7 11 13 17 19

作者: 浮生湮灭了美好    时间: 2013-7-25 20:20

QQ截图20130725201939.png (13.55 KB, 下载次数: 547)

QQ截图20130725201939.png


作者: crossin先生    时间: 2013-7-26 14:41
浮生湮灭了美好 发表于 2013-7-25 20:20

不错的。

附加要求:可以解释一下代码吗?比如
  1. for j in range(2,int(math.sqrt(i))+1):
复制代码
这行的具体含义

然后我就可以偷个懒啦
作者: 浮生湮灭了美好    时间: 2013-7-26 20:58
crossin先生 发表于 2013-7-26 14:41
不错的。

附加要求:可以解释一下代码吗?比如这行的具体含义

本来j范围应该是2到i的,用sqrt(i)+1可以简化算法的一种办法,那本谭浩强c语言上说的,具体怎么来没研究过
作者: fl0w    时间: 2013-9-18 14:32
输出100以内的质数:
t = [2]
for i in range(3,101,2):
    s = [j for j in t if i%j==0]
    if not s:t.append(i)
print(t)
作者: fl0w    时间: 2013-9-20 10:43
fl0w 发表于 2013-9-18 14:32
输出100以内的质数:
t = [2]
for i in range(3,101,2):

程序代码

Screenshot.png (21.27 KB, 下载次数: 517)

PrimeNumber.py

PrimeNumber.py


作者: achillesliu    时间: 2013-11-1 22:59
用排除法做
  1. import math
  2. print "Please input a number."
  3. n = input()
  4. primeNumber = range(0,n+1)
  5. for i in primeNumber:
  6.         dividend = int(math.sqrt(n)) + 1
  7.         for q in range(1, dividend):
  8.                 if i % q == 0:
  9.                         try:
  10.                                 primeNumber.remove(i)
  11.                         except:
  12.                                 pass
  13. print primeNumber
复制代码





欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5