鱼C论坛

 找回密码
 立即注册
查看: 2689|回复: 4

[已解决]python练习题:编写判断素数的函数 isprime(x) 。调用此函数输出 1-100 之间的素数。

[复制链接]
发表于 2023-3-22 19:58:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
二、编写判断素数的函数 isprime(x) 。调用此函数输出 1-100 之间的素数。
代码:
import math
def isPrime(n):         
    if n < 2:
        return False     
    for i in range(2, int(math.sqrt(n))+1):     #这里为什么要用int(math.sqrt(n))+1 ?
        if n % i == 0:
            return False
            break
    else:
        return True
num = int(input())        
for i in range(num+1):
    if isPrime(i):
        print(i,end=' ')  
最佳答案
2023-3-22 20:02:04
关于int(math.sqrt(n))+1的用法,这里使用了平方根(square root)的概念来优化算法性能。我们知道,素数是大于1且仅能被1和它本身整除的整数。在判断一个数n是否为素数时,我们可以将它与2到n-1之间的整数进行相除。但这样会产生较多不必要的运算。

在算法中,我们可以利用一个性质:如果n不能被2到sqrt(n)之间的任何整数整除,那么它就是一个素数。这样可以减少循环的次数,提高算法的性能。

因此,在代码中,我们用for i in range(2, int(math.sqrt(n))+1)来遍历2到sqrt(n)之间的整数。这里使用int(math.sqrt(n))是为了取得n的平方根的整数部分,而+1则确保循环能够包括sqrt(n)本身。这样一来,我们就可以判断输入的数n是否为素数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-22 20:02:04 | 显示全部楼层    本楼为最佳答案   
关于int(math.sqrt(n))+1的用法,这里使用了平方根(square root)的概念来优化算法性能。我们知道,素数是大于1且仅能被1和它本身整除的整数。在判断一个数n是否为素数时,我们可以将它与2到n-1之间的整数进行相除。但这样会产生较多不必要的运算。

在算法中,我们可以利用一个性质:如果n不能被2到sqrt(n)之间的任何整数整除,那么它就是一个素数。这样可以减少循环的次数,提高算法的性能。

因此,在代码中,我们用for i in range(2, int(math.sqrt(n))+1)来遍历2到sqrt(n)之间的整数。这里使用int(math.sqrt(n))是为了取得n的平方根的整数部分,而+1则确保循环能够包括sqrt(n)本身。这样一来,我们就可以判断输入的数n是否为素数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-22 20:02:18 | 显示全部楼层
int(math.sqrt(n))+1 的作用是计算 n 的平方根的整数部分加 1,这个值将会作为 for 循环的结束值。

在 Python 的 range 函数中,左闭右开区间中,起始值是包含的,但是结束值是不包含的。因此,如果要循环到 int(math.sqrt(n)),那么循环的结束值应该是 int(math.sqrt(n))+1。

使用这种方式来计算循环的结束值,可以避免循环过多的次数,提高代码的执行效率。例如,在计算 1000000 以内的素数时,对于每个数都循环到其本身可能会导致程序运行非常缓慢。而只循环到该数的平方根即可,可以极大地减少循环次数,提高程序效率。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-22 20:10:35 | 显示全部楼层
谢谢您们!讲得好清楚,我懂了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-22 22:10:32 | 显示全部楼层

谢谢您们!讲得好清楚,我懂了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 00:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表