欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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)

上一篇: 求N的阶乘

下一篇: 判断素数