[问题] 想知道这行程式码的意思

楼主: hellokidding (喔是喔真的假的)   2020-02-20 00:04:51
大家好~
想问大家一个简单问题
这是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)为什么要有这行
问题蛮菜的,请大家见谅
在此也感谢大家的回答!
作者: Philethan (PE)   2020-02-20 00:12:00
先假设是质数,然后开始用for循环判断到底是不是质数对正整数N,若在(2,√N)内存在一数x,使N能被x整除,那就说x是N的因子,即N不是质数,is_prime = False。而在你找到这么一个x时,你就确定它不是质数,所以剩下的(x,√N)内的整数就不需再被测试,也能直接跳出循环所以直接在 is_prime = False 后接上 break。然后就可以开始判断了。一开始之所以需要有 is_prime = True,是因为你是借由寻找是否存在着 num 的因子x来判断num是否为质数一但你找到了,你就自然会说“不是”。因此你得考虑也就是 num %x == 0 永远为 False,无法进入 if 设定is_prime = False 的情况,那么就是得事先默认is_prime = True 了:找不到因子,则为质数
作者: moodoa3583 (金牌台灣啤酒)   2020-02-20 00:51:00
宣告有if_prime 这个变量,之后才能用这个变量来做判断
作者: cuteSquirrel (松鼠)   2020-02-20 01:03:00
因为程式码是用因子整除删去法来寻找质数

Links booklink

Contact Us: admin [ a t ] ucptt.com