作者hellokidding (Bad Trip)
看板Python
标题[问题] 想知道这行程式码的意思
时间Thu Feb 20 00:04:51 2020
大家好~
想问大家一个简单问题
这是github上面100天学会python的题目
是关於写一个判断是否为质数的回圈
from math import sqrt
num = int(input('输入入一个正整数: '))
end = int(sqrt(num))
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)
想问的是第四行的:is_prime = True
(1)这行是什麽意思
(2)为什麽要有这行
问题蛮菜的,请大家见谅
在此也感谢大家的回答!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.71.68.210 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1582128293.A.7B1.html
1F:推 Philethan: 先假设是质数,然後开始用for回圈判断到底是不是质数02/20 00:12
2F:→ Philethan: 对正整数N,若在(2,√N)内存在一数x,使N能被x整除,那02/20 00:13
3F:→ Philethan: 就说x是N的因数,即N不是质数,is_prime = False。02/20 00:14
4F:→ Philethan: 而在你找到这麽一个x时,你就确定它不是质数,所以剩下02/20 00:14
5F:→ Philethan: 的(x,√N)内的整数就不需再被测试,也能直接跳出回圈02/20 00:15
6F:→ Philethan: 所以直接在 is_prime = False 後接上 break。02/20 00:15
7F:→ Philethan: 然後就可以开始判断了。02/20 00:16
8F:→ Philethan: 一开始之所以需要有 is_prime = True,是因为你是藉由02/20 00:16
9F:→ Philethan: 寻找是否存在着 num 的因数x来判断num是否为质数02/20 00:17
10F:→ Philethan: 一但你找到了,你就自然会说「不是」。因此你得考虑02/20 00:17
11F:→ Philethan: 也就是 num %x == 0 永远为 False,无法进入 if 设定02/20 00:18
12F:→ Philethan: is_prime = False 的情况,那麽就是得事先预设02/20 00:18
13F:→ Philethan: is_prime = True 了:找不到因数,则为质数02/20 00:18
14F:推 moodoa3583: 宣告有if_prime 这个变数,之後才能用这个变数来做判02/20 00:51
15F:→ moodoa3583: 断02/20 00:51
16F:推 cuteSquirrel: 因为程式码是用因数整除删去法来寻找质数02/20 01:03
感谢大大的回应!瞬间茅塞顿开!大感谢!
※ 编辑: hellokidding (111.71.68.210 台湾), 02/20/2020 01:21:33