什么是素数(质数)
- 素数(质数):因数只有自身和1的数
- 0和1不是素数(质数)
这里通过for循环打印素数(质数)
x = int(input())
y = []
for i in range(1,x+1):
for j in range(1,i+1):
if i % j == 0:
y.append(j)
if len(y) == 2:
print(i)
y.clear()
以上代码虽然可以打印出任何范围的素数(质数),但是范围如果非常巨大的话,它的空间消耗会很大。所以这里改良了一下代码
数字因数的分布规律
- 一个数的因数是平均分布在它的平方根两侧,它的因数或大于或小于或等于平方根
- 如果数字a不是素数 ,那么a会有一个非1的因数b,使 a = b * c成立,如果b分布在a的平方根左侧,那么必然有一个因数分布在a的平方根右侧
- 所以在判断a是否是素数,我们只检查2到a的平方根这个范围是否有a的因数即可,如果没有那a就是素数
from math import sqrt
x = int(input())
for i in range(2,x+1):
isPrime = True
for j in range(2,int(sqrt(i))+1):
if i % j == 0:
isPrime = False
break
if isPrime:
print(i)