python 求100以内的素数
程序员文章站
2024-03-15 16:02:24
...
看了几天Python
语法, 写一个小作业。
看代码
for divisor in range(101):
# range(x) 是 0到x-1 的list 数组
if divisor < 3:
# 1 和 2 这两个数先打印出来, 下面的判断直接从 3 开始
print(divisor)
else:
for dividend in range(2, divisor+1):
# 思路: 用我们取到的数 除以所有比他小的整数, 如果可以整除 则排除这个数是素数的可能性
result = divisor%dividend
if result == 0:
# 可以整除的条件下 判断除数 是不是 等于 被除数,不等于则跳过
if dividend != divisor:
break
else:
#打印正确的结果
print(divisor)
先实现效果,我承认代码写得很丑。下一步 打算把它封装成函数。
把上面的代码块 封装成函数的写法
代码如下:
def printPrimeNumber(num:int):
# 有个疑问, 不能像 c 语言一样 在定义函数的时候就申明好参数的类型么 [经过尝试 可以这样实现]
# 比如 函数写作 def printPrimeNumber(num:int) 类似这样的写法, 这样我们在调用函数的时候就知道传申明数据类型进来,岂不是很方便!
# 这里进行 参数类型判断 是不是 int 类型, 如果传入了错误的数据类型 抛出错误
if not isinstance(num,(int)):
# 抛出错误 信息, 这里的错误信息可以自定义!
raise TypeError("输入数据类型错误:必须输入 int 类型")
for divisor in range(num + 1):
# range(x) 是 0到x-1 的list 数组
if divisor < 3:
# 1 和 2 这两个数先打印出来, 下面的判断直接从 3 开始
print(divisor)
else:
for dividend in range(2, divisor + 1):
# 思路: 用我们取到的数 除以所有比他小的整数, 如果可以整除 则排除这个数是素数的可能性
result = divisor % dividend
if result == 0:
# 可以整除的条件下 判断除数 是不是 等于 被除数,不等于则跳过
if dividend != divisor:
break
else:
# 打印正确的结果
print(divisor)
printPrimeNumber(100)
2017-05-25 从新修改
def printPrimeNumber(num:int):
#输入类型判断
if not isinstance(num,int):
raise TypeError("输入类型错误")
result = []
for divisor in range(2,num+1):
for dividend in range(2,divisor+1):
if divisor%dividend == 0:
if dividend != divisor:
break
else:
result.append(divisor)
return result
print(printPrimeNumber(100))
#printPrimeNumber(100)