python练习题集锦之一,包括:1.限制输入的整数范围1到10之间、2.输出100以内素数(质数)及其和、3.求两个数最大公约数、最小公倍数
源码如下:
- 提示 = '输入错误,请重新输入!'
- while True:
- try:
- n = int(input('请输入一个正整数n(1≤n≤10):'))
- except:
- print(Error)
- continue
- if 1<=n<=10:
- break
- else:
- print(提示)
-
素数(质数)就是除了1和它本身外不存在任何因子的数。
素数(质数)算法
思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。
思路2):另外判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 之间的每一个整数去除就可以了。如果 m 不能被 2 ~ 间任一整数整除,m 必定是素数。原因:因为如果 m 能被 2 ~ m-1 之间任一整数整除,其二个因子必定有一个小于或等于,另一个大于或等于。例如 16 能被 2、4、8 整除,16=2*8,2 小于 4,8 大于 4,16=4*4,4=,因此只需判定在 2~4 之间有无因子即可。
思路一源码如下:
- sum = 0
- for i in range(2,100):
- for j in range(2,i):
- if (i%j == 0):
- break
- else:
- print(i,end=" ")
- sum += i
-
- print("和="+str(sum))
-
运行效果:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 和=1060
思路二源码如下:
- sum = 0
- for i in range(2,100):
- for j in range(2,int(i ** 0.5)+1): # 求根,向下取整再+1
- if (i%j == 0):
- break
- else:
- print(i,end=" ")
- sum += i
-
- print("和="+str(sum))
辗转相除法求最大公约数算法:
① 整数A对整数B进行取整, 余数用整数C来表示 举例: C = A % B
② 如果C等于0,则C就是整数A和整数B的最大公约数
③ 如果C不等于0, 将B赋值给A, 将C赋值给B ,然后进行 1, 2 两步,直到余数为0, 则可以得知最大公约数
最小公倍数 = 两个整数的乘积 / 最大公约数
源码如下:
- #辗转相除法求两个数的最大公约(GreatestCommonDivisor)
- def GCD(a, b):
- # 如果最终余数为0 公约数就计算出来了
- while(b!=0):
- temp = a % b
- a = b
- b = temp
- return a
-
- # 求两个数的最小公倍数(LeastCommonMultiple)
- def LCM(a,b):
- return a * b / GCD(a, b)
-
- print("最大公约数为:%d" % GCD(6,9)) # 输出
-
- print("最小公倍数:%d" % LCM(6,9)) # 输出
运行效果:
最大公约数为:3
最小公倍数:18
OK!