page contents

python基础编程100例:第18期-判断素数

本文讲述了python基础编程100例:第18期-判断素数!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2022-03-Fft5mj4b622e9eec63211.png

本文讲述了python基础编程100例:第18期-判断素数!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

第18期-判断素数

1 问题描述

素数又称质数(Prime number),是指只有1和它本身两个因数的自然数,如2、3、5、7、11、13等只能被 1 和该整数整除。

质数是与合数相对立的两个概念,比1大但不是素数的数称为合数,二者构成了数论当中最基础的定义之一。

1 和 0 既非素数也非合数。

用户输入一个大于1的正整数,判断它是否为素数~


2 解题思路

首先用input函数获取用户输入的数字

然后根据素数的定义和特点,判断该数值是否为素数

最后输出判断结果


3 解题方法

方法一

num = int(input("请输入一个大于1的整数:"))

if num > 1:

    for i in range(2, num):

        if num % i == 0:

            print(f"{num}不是素数")

            break

    else:

        print(f"{num}是素数")

else:

    print("输入错误,输入大于1的整数")


第1行: 用input函数获取用户输入的数值,int函数将其转化为整型,赋值给变量num

第2行: 由于素数是大于 1 的整数,用if...else语句对用户输入的数值进行判断,当该数值大于 1 时,继续判断是否为素数,否则转到第 9 行,用print函数打印 "输入错误,输入大于1的整数"

第3-6行: 用for循环遍历 2 至(num - 1)之间所有的数,由于素数只能被 1 和该整数整除,如果用户输入的数值能被 2 至(num - 1)之间的任意一个数整除,则不是素数,用break退出整个循环

第7-8行: 否则用print函数打印该数值是素数

方法二

num = int(input("请输入一个大于1的整数:"))

if num > 1:

    for i in range(2, int(num ** 0.5 + 1)):

        if num % i == 0:

            print(f"{num}不是素数")

            break

    else:

        print(f"{num}是素数")

else:

    print("输入错误,输入大于1的整数")

第1行: 用input函数获取用户输入的数值,int函数将其转化为整型,赋值给变量num

第2行: 由于素数是大于 1 的整数,用if...else语句对用户输入的数值进行判断,当该数值大于 1 时,继续判断是否为素数,否则转到第 9 行,用print函数打印 "输入错误,输入大于1的整数"

第3-6行: 用for循环遍历 2 至根号n 之间所有的数,如果用户输入的数值能被 2 至根号n 之间的任意一个数整除,则不是素数,用break退出整个循环

第7-8行: 否则用print函数打印该数值是素数


为什么判定一个素数只要将此数被2 至根号n 整除即可???

设n为合数,n=ab

若a = b, 则a 和 b 都等于根号n

若a ≠ b,则 a, b 之中总有一个小于根号n ,另一个大于根号n

也就是说合数有大于根号n的因数存在,则必有一个小于根号n 的因数与之对应。

再换个说法,如果一个数没有小于根号n 的因数,则不能有大于根号n 的因数。

所以只检查是否有小于或等于根号n 的因数即可

方法三

num = int(input("请输入一个大于1的整数:"))

if num > 1:

    if num == 2:

        print(f"{num}是素数")

    elif num % 2 == 0:

        print(f"{num}不是素数")

    else:

        for i in range(3, int(num ** 0.5) + 1, 2):

            if num % i == 0:

                print(f"{num}不是素数")

                break

        else:

            print(f"{num}是素数")

else:

    print("输入错误,输入大于1的整数")


第1行: 用input函数获取用户输入的数值,int函数将其转化为整型,赋值给变量num

第2行: 由于素数是大于 1 的整数,用if...else语句对用户输入的数值进行判断,当该数值大于 1 时,继续判断是否为素数,否则转到第 14 行,用print函数打印 "输入错误,输入大于1的整数"

第3-4行: 若该数值等于2,则打印该数是素数

第5-6行: 偶数中除了2都不是质数,且奇数的因数也没有偶数,所以若该数值能被2整除,则打印该数不是素数

第7-13行: 用for循环遍历 3 至根号n 之间所有的数,如果用户输入的数值能被3 至根号n 之间的任意奇数整除,则不是素数,用break退出整个循环;否则用print函数打印该数值是素数

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-iDHWmQfk62b2df8a521d9.jpeg

  • 发表于 2022-03-14 09:48
  • 阅读 ( 849 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1658 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章