查看: 1522|回复: 21

[Python] Python 判断质数函数

[复制链接]

1

技术

25

魅力

7

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
11343
人气
297
分享
42

论坛元老优秀版主活跃会员最佳新人灌水之王

发表于 2022-4-23 22:43:43 | 显示全部楼层 |阅读模式
[Python] 纯文本查看 复制代码
def is_prime(n):
    if n <= 1:
        return False
    if n == 2 or n == 3 or n == 5 or n == 7:
        return True
    if n % 2 == 0 or n % 3 == 0 or n % 5 == 0:
        return False
    for i in range(7, int(n**0.5) + 1, 30):
        if n % i == 0 or n % (i + 4) == 0 or n % (i + 6) == 0 or n % (i + 10) == 0 or n % (i + 12) == 0 or n % (i + 16) == 0 or n % (i + 22) == 0 or n % (i + 24) == 0:
            return False
    return True

评分

参与人数 2技术 +1 人气 +5 收起 理由
xiaomeng + 1
Andy + 5 赞一个!

查看全部评分

Just do it.

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-24 18:57:32 | 显示全部楼层
你想复杂了
[Python] 纯文本查看 复制代码

n = int(input("please enter the number:"))
for i in range(2, n):
    if n % i == 0:
        print(" %d is not a prime number!" % n)
        break
else:
    print(" %d is a prime number!" % n)





Manners maketh man

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-24 19:02:01 | 显示全部楼层
一般来说,当用户输入一个素数之后你只要从2开始一直除到该数之前的那个自然数,就可以了

我看你代码第一感觉就是你c++学多了,哪有你这么写的

记住,python是一个非常简单的语言,简单的语言永远都是美观的,整洁的@skystars
Manners maketh man

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-24 19:09:46 | 显示全部楼层
不得不过来说一下你,这样写一大串,码品很差

以后多多发代码,我有空给你改正改正吧@skystars
Manners maketh man

1

技术

25

魅力

7

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
11343
人气
297
分享
42

论坛元老优秀版主活跃会员最佳新人灌水之王

 楼主| 发表于 2022-4-24 21:01:16 | 显示全部楼层
xiaomeng 发表于 2022-4-24 19:09
不得不过来说一下你,这样写一大串,码品很差

以后多多发代码,我有空给你改正改正吧@skystars  ...

这个是优化到极致的

你那程序输入的数字稍微大点就很慢了,例如2147483647
Just do it.

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-24 23:32:25 | 显示全部楼层
skystars 发表于 2022-4-24 21:01
这个是优化到极致的

你那程序输入的数字稍微大点就很慢了,例如2147483647 ...

我写py主要讲究简单,你整一大长串
Manners maketh man

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-24 23:37:16 | 显示全部楼层
skystars 发表于 2022-4-24 21:01
这个是优化到极致的

你那程序输入的数字稍微大点就很慢了,例如2147483647 ...

你这一大堆判断还敢说优化到极致,threading不香吗,你以为这是leetcode解题啊
Manners maketh man

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-25 11:04:54 | 显示全部楼层
skystars 发表于 2022-4-24 21:01
这个是优化到极致的

你那程序输入的数字稍微大点就很慢了,例如2147483647 ...

其实python没啥优化这一说
Manners maketh man

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-25 12:28:07 | 显示全部楼层
skystars 发表于 2022-4-24 21:01
这个是优化到极致的

你那程序输入的数字稍微大点就很慢了,例如2147483647 ...

不过你说的对,我这种算法慢的离谱

有的时候看用途,你标题说判断质数我就判断质数,要是你折磨大的数,我再试试其他方法,改进下
Manners maketh man

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-25 12:37:10 | 显示全部楼层

。。。。你用多线程更快了
Manners maketh man
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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