python基础教程100例题: 12&13

12、题目:判断101-200之间有多少个素数,并输出所有素数。

        素数的定义大家都知道,就是一个数如果他的因数只有1和它本身,那么这个数就是素数(质数)。首先,题目要在101-200之间判断,所以要在这个范围内用for循环,对每一个数 i 进行判断。判断方法就是:令 j 在2到这个数 ( i - 1 )之间循环 ,如果在循环过程中,存在一个 j ,这个数 i 能被 j 整除,那么它就不是素数。反之是素数。

count = 0
prime=[]
for i in range(101,201):
    for j in range(2,i):
        if i % j == 0:
             break 
    else:          ##else和for并列
        count += 1
        prime.append(i)
print(prime)
print("101-200中的素数有{}个".format(count))

        这个代码中有两个需要注意的点。首先,如果 i 能整除 j ,即 i % j == 0时,break退出整个循环,当前的 i 不是素数,且继续寻找下一个 i 进行判断。 如果用的是continue代表结束当次循环,会继续寻找下一个 j , continue会遍历每一个 j ,最终每一个数字都会被输出。因此 if 语句后应该用break。 其次,else是和else对应的。一般我们见到的都是if……else和if……elif……else,其实for和else也是可以使用的。该程序在执行完所有 j 之后,如果都没有出现整除的情况,退出if循环,执行for对应的else语句。

13、题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

         这个题其实很简单,只需要掌握如何找到一个三位数的个十百位,然后判断它们各自的3次方之和是否和原数相同,如果相同就是水仙花数,反之则不是水仙花数。

for i in range(100,1000):
    c = i % 10
    b = int(i / 10) % 10
    a = int(i / 100)    
    if i == a**3 + b**3 + c**3:
        print(i)

        分解一个数字的个十百位无非就是该数字和10、100的商和余数之间的关系,我们如果一时想不起如何分解,则可以拿一个数字和10 100分别除一下,看看他们余数和商之间的关系就能找到规律。个位就是该数字除以10的余数,十位就是该数字除以10的商再除以10的余数,百位就是该数字除以100的商。商有两种表达方式,一是用int(a/b),也可以用a//b 。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值