不管是while循环还是for循环,原理都是取根号,循环到取根号后的数,至于为什么需要循环到开根后的数,我想主要是因为一个数的分解因子在开根号后的数向上取整以下吧。
话不多说,上代码:
- while循环:
while循环原理如下:
i = 2
while i <= 100:
# 内层循环 j 从2循环到根号 i
j = 2
while j <= (i / j): # j <= (i/j) 等效于 j*j <= i 也就等于 j <= 根号 i
if i % j == 0:
break # 判断如果i可以被j整除,则提前跳出j的循环
j = j + 1
# 如果j > i/j判断为真表示正常循环结束,i没有被j整除,i是素数。 否则就是提前跳出j循环的,i有被j整除,i不是素数。
if j > i / j:
print(i, end=" ")
i = i + 1
输出结果:
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
- 也可以用for循环:
这里的round()函数是向上取整。
import math
for i in range(2, 101):
flag = 0
for j in range(2, round(math.sqrt(i) + 1)):
if i % j == 0:
flag = 1
break
if flag:
continue
print(i)
结果是一样的!
标签:flag,while,循环,100,素数,整除,根号 来源: https://www.cnblogs.com/surplus-G/p/15302753.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。