math

对比两种方案,哪个更有优势
1、example 1
from math import sqrt

num = int(input('请输入一个正整数: '))
end = int(sqrt(num))
print(end)
is_prime = True
for x in range(2, end + 1):
if num % x == 0:
is_prime = False
break
if is_prime and num != 1:
print('%d是素数' % num)
else:
print('%d不是素数' % num)

print(19 * 17)

上面的例子采用开平方的方式进行被除参数的选值范围,直接限定了取余对象的最大值,因为根据乘除法的特点可以知道,被除数 × 结果 = 除数,也就是说对大于开平方意外的任何一个数取余,那么另与之对应的结果必然小于开平方的值,也就是说能被整除的一定在开平方以内,比如说对于25开平方,那么能被25取于的一定在5之内(包含5),因为如果你大于5,那另一个值就一定小于5,比如6,那另一个值就是约等于4,4*6=24,4比5小。
2、example 2
一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除(2, 3, 5, 7等),换句话说就是该数除了1和它本身以外不再有其他的因数。

首先我们来第一个传统的判断思路:

def handlerNum(num):
# 质数大于 1
if num > 1:
# 查看是否有其他因子
for i in range(2, num//2+1):
if (num % i) == 0:
print(num,"不是质数")
break
else:
print(num, "是质数")

# 如果输入的数字小于或等于 1,不是质数
else:
    print(num, "不是质数")

上面这个例子,也是正确的,但是算法的次数增加了,取余对象限制在一半以内,和上面的逻辑有点类似,当你的取余对象大于值的一半时,那么另一个值必然在小于值的一半当中,也就是取余对象一定小于或等于值的一半。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • TF API数学计算tf...... :math(1)刚开始先给一个运行实例。tf是基于图(Graph)的计算系统...
    MachineLP阅读 4,082评论 0 1
  • 29、Divide Two Integers 43、multiply strings 50、pow(x,y) 60...
    lifesmily阅读 440评论 0 0
  • Math任务 1.写一个函数,返回从min到max之间的随机整数,包括min不包括max 。 function r...
    Rising_suns阅读 196评论 0 0
  • Math任务 1、写一个函数,返回从min到max之间的随机整数,包括min不包括max
    湖衣阅读 358评论 0 0
  • .写一个函数,返回从min到max之间的 随机整数,包括min不包括max function randomness...
    邢烽朔阅读 369评论 0 1

友情链接更多精彩内容