求100以内所有素数之和并输出 。(素数指从大于1,且仅能被1和自己整除的整数。提示:可以逐一判断100以内每个数是否为素数,然后求和。)
#找出100内所有素数
ls = [];
for i in range(100):
if i < 2:
continue;
#难点:
#1.range(2,2) 返回空值,直接跳过循环,未执行break,else语句会被执行
#2.for.j循环执行完毕后,如果未找到满足i%j==0的数值,证明其是素数,break不会被执行,else会被执行;如果找到i%j==0的数值,证明其不是素数,break会被执行,else则不会被执行;
for j in range(2, i):
if i%j == 0:
#print("{0}不是素数".format(i));
break;
else:
#print("{0}是素数".format(i));
ls.append(i);
print(ls);
#求和
s = 0;
for k in ls:
s += k;
print(s);
#运行结果
#[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]
#1060
知识点:
1. 循环高级用法:循环与else
当循环没有被break语句退出时,执行else语句块;else语句块作为"正常"完成循环的奖励;这里else的用法与异常处理中else用法相似;
for c in "python":
if c == "t":
continue;
print(c, end="");
else:
print("正常退出");
#运行结果
#pyhon正常退出
for c in "python":
if c == "t":
break;
print(c, end="");
else:
print("正常退出");
#运行结果
#py
2. range(n, n)返回空值
>>> list(range(2,2));
[]
>>> list(range(1,1));
[]
range(2, 2)返回一个空的迭代器,for循环作用于空的迭代器上一次也不会执行,而是直接结束。空迭代器是合法的,不会报错。