Python 质数判断
一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除(2, 3, 5, 7等),换句话说就是该数除了1和它本身以外不再有其他的因数。
test.py 文件:
# -*- coding: UTF-8 -*-
# Filename : test.py
# author by : www.runoob.com
# Python 程序用于检测用户输入的数字是否为质数
# 用户输入数字
num = int(input("请输入一个数字: "))
# 质数大于 1
if num > 1:
# 查看因子
for i in range(2,num):
if (num % i) == 0:
print(num,"不是质数")
print(i,"乘于",num//i,"是",num)
break
else:
print(num,"是质数")
# 如果输入的数字小于或等于 1,不是质数
else:
print(num,"不是质数")
执行以上代码输出结果为:
$ python3 test.py 请输入一个数字: 1 1 不是质数 $ python3 test.py 请输入一个数字: 4 4 不是质数 2 乘于 2 是 4 $ python3 test.py 请输入一个数字: 5 5 是质数
hizmz
hiz***sina.com
原作者的算法基本正确,但时间复杂度较高,在判断一个大数是质数还是合数的情况下,应该在查看因子那里的循环中使用到平方根。代码如下:
原理是用了开根号法:
假如一个数N是合数,它有一个约数a,那么有a×b=N
则a、b两个数中必有一个大于或等于根号N,一个小于或等于根号N。
因此,只要小于或等于根号N的数(1除外)不能整除N,则N一定是素数。
hizmz
hiz***sina.com
cindyliu
916***457@qq.com
cindyliu
916***457@qq.com
TwoIceBing
139***2736@qq.com
输出1-100以内的质数:
TwoIceBing
139***2736@qq.com
zacharyvic
194***1924@qq.com
用质数表来判断是否为质数
zacharyvic
194***1924@qq.com
freejustin
fre***stin@yeah.net
参考方法:
freejustin
fre***stin@yeah.net
freejustin
fre***stin@yeah.net
参考方法:
freejustin
fre***stin@yeah.net
vinson
wei***ng_vinson@163.com
加入整数判断:
vinson
wei***ng_vinson@163.com
小土豆
176***7440@qq.com
Python3 计算质数 (厄拉多塞筛法)
小土豆
176***7440@qq.com
小无然
ysl***5_118@163.com
参考:
小无然
ysl***5_118@163.com
学海无牙
yj.***007@yahoo.com
参考:
学海无牙
yj.***007@yahoo.com
Kindred
268***8532@qq.com
企图结合平方根算法和厄拉多塞筛法一起用,但是代码会复杂很多,转念一想,如果遍历剔除倍数的操作 比 一个个判断整除的操作 ,并没有省去多长时间,那么可能就不如直接用平方根算法了吧。
赞同 hizmz 的代码原理,补充一下注释吧,大佬牛逼。
Kindred
268***8532@qq.com