内容简介:python二级练习(8)
8. 输入一个数,判断这个数是否为素数,并输出判断结果。
(所谓素数,是指除了1和该数本身之外,不能被其它任何整数整除的大于1的数。)
解法一:
#python 3.6 #蔡军生 #http://blog.csdn.net/caimouse/article/details/51749579 # import random isPrime = False num = int(input('请输入一个整数:')) for i in range(2, num): if num % i == 0: isPrime = True break; if isPrime or num == 1: print(num, ' 不是一个素数') else: print(num, ' 是一个素数')
输出如下:
请输入一个整数:100
100 不是一个素数
解法二:
#python 3.6 #蔡军生 #http://blog.csdn.net/caimouse/article/details/51749579 # from math import sqrt isPrime = True num = int(input('请输入一个整数:')) if num == 2 or num == 3: isPrime = True elif num == 1 or num % 6 != 1 and num % 6 != 5: isPrime = False else: for i in range(5, int(sqrt(num)) + 1, 6): print(i) if num % i == 0 or num % (i + 2) == 0: isPrime = False # if isPrime: print(num, ' 是一个素数') else: print(num, ' 不是一个素数')
最后一种解决法是快速的判断方法。
首先看一个关于质数分布的规律:大于等于5的质数一定和6的倍数相邻。例如5和7,11和13,17和19等等;
证明:令x≥1,将大于等于5的自然数表示如下:
······ 6x-1,6x,6x+1,6x+2,6x+3,6x+4,6x+5,6(x+1),6(x+1)+1 ······
可以看到,不在6的倍数两侧,即6x两侧的数为6x+2,6x+3,6x+4,由于2(3x+1),3(2x+1),2(3x+2),所以它们一定不是素数,再除去6x本身,显然,素数要出现只可能出现在6x的相邻两侧。这里有个题外话,关于孪生素数,有兴趣的道友可以再另行了解一下,由于与我们主题无关,暂且跳过。这里要注意的一点是,在6的倍数相邻两侧并不是一定就是质数。
比特币源码入门教程
https://edu.csdn.net/course/detail/6998
深入浅出Matplotlib
https://edu.csdn.net/course/detail/6859
深入浅出Numpy
Python游戏开发入门
http://edu.csdn.net/course/detail/5690
你也能动手修改C编译器
http://edu.csdn.net/course/detail/5582
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- [Vue 2.x Todo 教程练习参考答案] 标为完成练习参考答案
- [Vue 2.x Todo 教程练习参考答案] 添加todo练习参考答案
- [Vue 2.x Todo 教程练习参考答案] 入门仪式_Hello_Vue练习参考答案
- python二级练习(4)
- python二级练习(6)
- python二级练习(7)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Apache Modules Book
Nick Kew / Prentice Hall PTR / 2007-02-05 / USD 54.99
"Do you learn best by example and experimentation? This book is ideal. Have your favorite editor and compiler ready-you'll encounter example code you'll want to try right away. You've picked the right......一起来看看 《The Apache Modules Book》 这本书的介绍吧!