前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python与人工智能——24、for循环基础练习题——判断质数/素数

Python与人工智能——24、for循环基础练习题——判断质数/素数

作者头像
红目香薰
发布2024-09-27 08:42:53
900
发布2024-09-27 08:42:53
举报
文章被收录于专栏:CSDNToQQCode

前言

Python作为当前最为流行的一种语言与身份程序员的大家们几乎是时时刻刻分不开的,无论是做任何方面的工作基本上不会缺少Python的出现,就好似现阶段各平台的低代码Agent开发都支持的是Python语言,对其它的语言友好度都不是很高,那么,我们就非常的有必要将Python深入的了解一下,本系列文章的目的就是为了让大家对于Python有个更加直观的了解,并且要使用Python做很多的小应用,只有真正的实操了才能更好的掌握它。

正文

开发工具:Pythony与人工智能——3、Python开发IDE工具VSCode-CSDN博客

for循环基础练习题——判断质数/素数

1、什么是质数/素数?

百度百科中:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。

2、整除代码的表达方式?

num%i==0

我们使用num%i==0的方式来代表是否能被整除,其中num与i都是整数,num是要判断的数,i的取值范围是2~num-1所有整数的集合,【%】取模符号,也可以叫做取余数的符号,交取余。如果一个数除以另外一个数后余数为0,那就代表这个被除数可以整除另外一个数。

3、单个判断素数代码

仅仅来判断一个数是否是质数,这个只要思想不滑坡也都能搞出来,为了增加难度,我使用的是平方根的方法,但是基本方法的效率并不是最高的,后面我会给出number 的平方根方法。

代码语言:javascript
复制
number = 53  # 要判断的数

# 假设number是质数
is_prime = True

# 检查2到number-1之间的数是否能整除number
for i in range(2, number):
    if number % i == 0:
        # 如果有数能整除number,则number不是质数
        is_prime = False
        break

# 输出结果
if is_prime and number > 1:  # 排除1,因为1不是质数
    print(f"{number} 是质数")
else:
    print(f"{number} 不是质数")
质数检查到 number 的平方根理论基础

质数定义:一个大于1的自然数,除了1和它本身以外没有其他正因数。 因数对称性:如果一个数 n 有一个因子 d,那么 n 必然还有一个因子 n/d。

证明过程

假设 n 有一个因子 d,那么存在另一个因子 k 使得 n = d * k。 如果 d 和 k 都大于 sqrt(n),那么 d * k > sqrt(n) * sqrt(n) = n,这与 n = d * k 矛盾。 因此,至少有一个因子 d 小于或等于 sqrt(n)。

示例说明

考虑一个数 n,比如 n = 53: 平方根 sqrt(53) 大约是 7.28。 我们只需要检查 2 到 7 之间的数是否能整除 53。

具体说明

53 % 2 != 0 53 % 3 != 0 53 % 4 != 0 53 % 5 != 0 53 % 6 != 0 53 % 7 != 0

既然 53 不能被 2 到 7 之间的任何一个数整除,那么 53 就是一个质数。

代码实现
代码语言:javascript
复制
number = 53  # 要判断的数

# 如果number小于2,则不是质数
if number < 2:
    print(f"{number} 不是质数")
elif number == 2:  # 如果number等于2,则是质数
    print(f"{number} 是质数")
elif number % 2 == 0:  # 如果number是偶数,则不是质数
    print(f"{number} 不是质数")
else:
    # 只需检查到number的平方根即可
    for i in range(3, int(number ** 0.5) + 1, 2):
        if number % i == 0:
            print(f"{number} 不是质数")
            break
    else:
        print(f"{number} 是质数")

运行效果:

4、判断1~100以内的所有质数(嵌套for循环)

判断1~100以内所有的质数有一定的难度,需要思考一下。

代码语言:javascript
复制
# 打印1到100之间的所有素数
for n in range(1, 101):
    # 假设n是素数
    is_prime = True
    
    # 检查2到n-1之间的数是否能整除n
    for i in range(2, n):
        if n % i == 0:
            # 如果有数能整除n,则n不是素数
            is_prime = False
            break
    
    # 如果n是素数,则打印出来
    if is_prime and n > 1:  # 排除1,因为1不是素数
        print(n)
代码语言:javascript
复制
# 打印1到100之间的所有素数
for n in range(1, 101):
    # 假设n是素数
    is_prime = True
    
    # 检查2到n-1之间的数是否能整除n
    for i in range(2, n):
        if n % i == 0:
            # 如果有数能整除n,则n不是素数
            is_prime = False
            break
    
    # 如果n是素数,则打印出来
    if is_prime and n > 1:  # 排除1,因为1不是素数
        print(n)

总结

质数,可以算是一个大题,不仅仅是我们练习中会使用到,各种算法的比赛中也会运用到的,希望大家能用心把这里搞一下,包括后面的质数,因数等操作,都是非常重要的内容。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • for循环基础练习题——判断质数/素数
      • 1、什么是质数/素数?
      • 2、整除代码的表达方式?
      • 3、单个判断素数代码
      • 4、判断1~100以内的所有质数(嵌套for循环)
    • 总结
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档