输出n以内的所有素数

一、首先明确素数的定义,及粗略程序思路。

素数的定义:

“素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。”

也就是说假设一个数为x,该数能被且只能被1以及它本身整除,那么该数就为素数。

例外:0既不是素数也不是合数,需要考虑这种特殊情况。

换个思路:

能被其他素数整除的数都不是素数。

二、根据素数的定义设计的详细程序思路及步骤。

设计程序步骤如下:

  1. 遍历循环1:把小于n的每个正数循环一遍,不包括1。(原因:1是素数,但是1能被所有数正整除,属于特殊情况,不能放进此循环中)

  1. 包括在遍历循环1的判断语句1:判断这个数是否小于n(如果否停止循环)。

  1. 包括在遍历循环1的遍历循环2:遍历所有的素数并整除。

  1. 包括在遍历循环2的判断语句2:判断这个数是否能被这个数之前的所有素数(除1以外之前所有的数组合成的素数大名单)整除。

  1. 导出素数大名单并加上1(1也为素数)

  1. 测试各步骤是否有问题,有问题修改,如果没问题,进行代码组合并def封装

三、分步骤代码解释及整段代码

遍历循环1代码
list1=[]
k=n-1 
#因为python的n次遍历是从0开始,循环到<n的最后一个正整数,而本次循环中不考虑0所以遍历次数少一次,需要减掉
w=1
#因为python的n次遍历是从0开始,循环到<n的最后一个正整数,本次题目为输出n以内的所有素数,如果包括n次处填0如果不包括本次循环中不考虑1所以得在进入循环前预先加1方便遍历
for i in range(k):
    w=w+1 #
    list1=list1+[w]
print(list1)    

关于k=n-1 和w=1的代码解释:

l=[]
xx=10
for i in range(xx):
    l=l+[i]
print(l)   
判断语句1代码
#判断这个数是否小于n(如果否跳出判断)
x=1
n=2
if x<n:
    print(x) #print(x)的意思是打印x的值,这里只是为了判断语句的完整性写的,后期print(x)的位置就是遍历循环2的位置
else: pass
遍历循环2代码
for i in range(len(list1)):
    print(i)
判断语句2代码
list2=[2,3,5,7]
w=12121321323213
q=0
if isinstance (w/list2[i],int):
        pass
    else:
        q=1
        break
if q==1: 
    list2=list2+[w]
完整代码:
import math
import sys
 
def prime(n):
    if n <= 1:
        return 0
    #for i in range(2,int(math.sqrt(n)+1)):
    for i in range(2,n):
        if n%i == 0:
            return 0
    return 1
 
if __name__ == "__main__":
    n = int(sys.argv[1])
    for i in range(2,n+1):
        if prime(i):
            print i
#教科书上抄的,等后期写完补

猜你喜欢

转载自blog.csdn.net/weixin_48572116/article/details/128964405