python找素数-Python 质数判断

#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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值