Python-计算100以内素数之和

求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));
[]

3. 为什么循环中range(2,2)不报错?

range(2, 2)返回一个空的迭代器,for循环作用于空的迭代器上一次也不会执行,而是直接结束。空迭代器是合法的,不会报错。 

 4. Python中for循环搭配else的陷阱

猜你喜欢

转载自blog.csdn.net/cheng6023/article/details/102779799
今日推荐