python
count = 0 # 计数器
for i in range(2, 1001):
is_prime = True # 标记是否为素数
for j in range(2, int(i 05) + 1):
if i % j == 0:
is_prime = False
break
if is_prime:
print(i, end='\t')
count += 1
if count % 10 == 0:
print()
print('\n共有{}个素数'format(count))
程序中,使用两个循环,外层循环枚举2到1000之间的所有数字,内层循环判断当前数字是否为素数。如果当前数字是素数,输出该数字,并将计数器加1;如果输出的数字数量达到10个,就换行。最后输出素数的数量。
##python算法题:输出2~100之间的素数
i=2
j=2
##除了1和其本身,其他都不能整除
for j in range(2,101):
for i in range(2,j):
if j%i==0:
break;
elif (j-1)==i:
print ('{}是素数'format(j))
例如:
k = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
for i in range(100, 998):
if (i % 10 + i % 100 // 10) % 10 == (i // 100):
for m in k:
if i % m == 0:
break
if m ==31:
print(i)
扩展资料:
Python在执行时,首先会将py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,NET是一致的。
Python Virtual Machine与Java或NET的Virtual Machine不同的是,Python的Virtual Machine是一种更高级的Virtual Machine。这里的高级并不是通常意义上的高级,不是说Python的Virtual Machine比Java或NET的功能更强大,而是说和Java 或NET相比,Python的Virtual Machine距离真实机器的距离更远。
参考资料来源:百度百科-Python
# 求100以内的素数
primes = []
for n in range(2,101):
for i in range(2,int(n(1/2))+1):
if n % i == 0:
break
else:
primes += [n]
print(primes)
print(f'100内有{len(primes)}个素数')
程序缩进如图所示
i = 2while i <= 100:
j = 2
while j <= i / j: #难点1
if i % j == 0:
break #如果提前提出,j的值<= i / j
j = j + 1
if j > i / j: #难点2
print(i, end=' ')
i = i + 1
其实代码每一句都很简单,就不一一注释了,其实难的是思路。主要是两个地方对J变量的判断
A:while循环,一种常见的是j<=sqrt(i),用这个数的开方(根号)来指定搜索上限,这是因为:
一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(n),一个大于等于sqrt(n)——所以只要搜索到根号的地方就可以了,提高了速度。
用i/j的方式是sqrt的一种变种,jj>1,两边平方后不等式仍然成立
j^2<=i
两边除以j就变成了j
<=
i
/
j
B:第二处,根据j的数值来判断i是否是素数。当在循环中找到i
%
j
==
0的情况,循环会提前退出,导致j
< i
/
j——说明不是素数;如果循环没有提前退出,说明i是素数,这时j的值>
i
/
j#求100以内的全部素数
L=[]
for x in range(100):
if x<2:
continue
for i in range(2,x):
if x%i==0:
break
else: #走到此处,x一定是素数
Lappend(x)
print("100以内的全部素数有:",L)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)