#11
hizmz
hiz***sina.com
40
原作者的算法基本正确,但时间复杂度较高,在判断一个大数是质数还是合数的情况下,应该在查看因子那里的循环中使用到平方根。代码如下:
# Python 程序用于检测用户输入的数字是质数还是合数
import math
# 用户输入数字
num = int(input("请输入一个数字: "))
# 质数大于 1
if num > 1:
# 找到其平方根( √ ),减少算法时间
square_num = math.floor( num ** 0.5 )
# 查找其因子
for i in range(2, (square_num+1)): #将平凡根加1是为了能取到平方根那个值
if (num % i) == 0:
print(num, "是合数")
print(i, "乘于", num // i, "是", num)
break
else:
print(num, "是质数")
# 如果输入的数字小于或等于 1,不是质数
else:
print(num, "既不是质数,也不是合数")
原理是用了开根号法:
假如一个数N是合数,它有一个约数a,那么有a×b=N
则a、b两个数中必有一个大于或等于根号N,一个小于或等于根号N。
因此,只要小于或等于根号N的数(1除外)不能整除N,则N一定是素数。
hizmz
hizmz
hiz***sina.com3年前 (2017-09-14)
#10
cindyliu
916***457@qq.com
6
# -*- coding: UTF-8 -*-
#用while循环,进行质数判断
#输入数字
num = int(input("输入一个数字:"))
#定义i
i = 2
while i < num:
s = num % i
if s == 0:
print("{}能被除的数其中有{}".format(num,i))
break
else:
i += 1
if num == i:
print("是质数")
else:
print("不是质数")
cindyliu
cindyliu
916***457@qq.com3年前 (2017-12-07)
#9
TwoIceBing
139***2736@qq.com
6
输出1-100以内的质数:
count = 0
for i