开发者学堂课程【Python入门 2020年版:使用假设成立法求质数】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10276
使用假设成立法求质数
# 2~100
for i in range(2,101):
for j in range(2,int(i ** 0.5)):
if i % j == 0:
#除尽了,说明 i 是合数
flag = False
break
还可以有别的方式:
for i in range(2,101):
flag = True
#每次都假设i是一个质数
for j in range(2,int(i ** 0.5)):
if i % j == 0:
#除尽了,说明i是个合数
flag = False
break
当 i=9时,假设是质数,9%2不等于0,所以不会走 flag=False break。9%3时,if i % j == 0就等于0。就进入,把9的 flag 改成 False,直接停掉它。走完后,9的 flag 是 False。
比如i=11,11是质数,就会不断的除2,结果不是0,不会进来;再除3,4,5,6,7,8,9,10都会有余数,就会不进入。
整个内循环走完了,flag 依然是 Ture,等到 for 循环走完了,
for i in range(2,101):
flag = True
#每次都假设i是一个质数
for j in range(2,int(i ** 0.5)):
if i % j == 0:
#除尽了,说明 i 是个合数
flag = False
break
if flag:
#可以简写成:
if flag == Ture:
print(i
,’是质数’)
if是 Ture,就会走下面的代码:
if flag:
#if flag == Ture:
print(i, ‘是质数’)
运行结果:
C:\Users\chris\AppData\Local \Programs \Python\Python37\python.exe C:/Users/chr1s/Desktop/Python 基础/Day05-字符
2是质数
3是质数
4是质数
5是质数
6是质数
7是质数
8是质数
9是质数
11是质数
13是质数
15是质数
17是质数
19是质数
23是质数
…
Process finished with exit code 0
以上代码有错,6、8、9、都认为是质数,要加1,因为如果判断9,9开方等于3,它正好是2~3,取不到3。没有便利到i。
for i in range(2,101):
flag = True
#每次都假设i是一个质数
for j in range(2,int(i ** 0.5) +1 ):
if i % j == 0:
#除尽了,说明 i 是个合数
flag = False
break
if flag:
#可以简写成:if flag == Ture:
print(i
,’是质数’)
if 是 Ture,就会走下面的代码:
if flag: #if flag == Ture:
print(i, ‘
是质数’)
运行结果:
C:\Users\chris\AppData\Local \Programs \Python\Python37\python.exe C:/Users/chr1s/Desktop/Python 基础/Day05-字符
2是质数
3是质数
5是质数
…
Process finished with exit code 0
假设 i 是质数,只要除尽就说明假设不成立。