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 。