习题解析之:输出 n 以内的所有素数
【问题描述】
编程找出n以内(即小于等于n)的所有素数。
输入格式
输入一个正整数
输出格式
在同一行中从小到大依次输出不大于n的全部素数,每个数字后面一个空格。
示例
输入:
97
输出:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
【编程思路】
判断一个整数 m 是否为素数的方法是:小于 2 的整数肯定不是素数(最小的素数是 2)。对于大于或等于 2 的整数,用2~sqrt(m)中的每一个整数 i 去除 m ,若某一个 i 能被 m 整除,则 m 不是素数;否则,m 是素数。该操作可定义为一个函数,如下:
def isprime(m):
if m < 2:
return False
for i in range(2,int(m ** 0.5) + 1):
if m % i == 0:
return False
return True
要找出 n 以内(即小于等于 n)的所有素数,用循环 for i in range(2,n + 1): 对 2 ~ n 这个范围的整数进行穷举,若某个整数 i 是素数,则输出它。
编写的源程序如下:

浙公网安备 33010602011771号