Python基础入门day03
while与for的基础练习
- A、B、C、D、E 5 个人捕 🐟 ,后疲惫不堪,睡第二天,A 第一个醒来,他将 🐟 平分为 5 份,把多余的一条扔回河中,然后拿走自己的一份
B 第二个醒来,但不知道 A 已经拿走了一份 🐟 ,于是他将剩下的 🐟 平分为 5 份,扔掉多余的一条,然后只拿走了自己的一份,接着C、D、E依次醒来,也都按同样的办法分 🐟,问这5人至少合伙捕到多少条 🐟
fish = 1
while True:
is_premie = True
k = fish
for i in range(5):
if k % 5 == 1:
k = (k - 1)//5 * 4
else:
is_premie = False
break
if is_premie:
print(fish)
fish += 1
for i in range(2,101):
is_prime = True
for j in range(2,i):
if i % j == 0:
is_prime = False
break
if is_prime:
print(i)
- 百鸡百钱问题,公鸡(5元一只),母鸡(3元一只),小鸡(一元三只),求100元刚好一百只鸡
for i in range(21):
for j in range(34):
for z in range(0,101,3):
if i + j +z == 100 and i * 5 + j * 3 + z // 3 == 100 :
print(i,j,z)
- 完美数,1-10000中,一个数 == 所有因子和(除开它本身)
思路:求一个数的因子,让这个数对1-(n-1)取余,如果等于0就记下来
优化:求一个数的因子,只需要这个数开平方的值取余,注意取值范围需+1
for i in range(2,10001):
total = 0
for j in range(1,i):
if i % j == 0:
total += j
if total == i:
print(i)
----------------------------
for i in range(2,10001):
total = 0
for j in range(1,int(i**0.5)+1):
if i % j == 0:
total += j
if i != i // j and j != i//j:
total += i//j
if total == i:
print(i)
|