python循环结构02

文章介绍了如何使用Python编程解决《算经》中的百钱买百鸡问题,涉及鸡的不同组合,以及生成无重复三位数、查找完数、判断素数和求和特定序列的问题。
摘要由CSDN通过智能技术生成

[Python]百钱买百鸡问题

中国古代数学著作《算经》中提出一个问题:公鸡每只5钱,母鸡每只3钱,小鸡1钱3只。若用100钱买100只鸡(每种鸡必须都买到),输出所有的买法,要求输出结果形式如“rooster=公鸡只数,hen=母鸡只数,chick=小鸡只数”,并且按公鸡只数由小到大的顺序输出,有多组解时分行输出。

样例输入 复制

样例输出 复制

格式如下:

rooster=1,hen=2,chick=3

rooster=2,hen=3,chick=4

...

for rooster in range(1, 20):

    for hen in range(1, 33):

        chick = 100 - rooster - hen

        if 5 * rooster + 3 * hen + chick / 3 == 100:

            print(f"rooster={rooster},hen={hen},chick={chick}")

 [Python]无重复三位数

0-4这5个数字可以组成多个无重复的三位数,请编程计算并按从小到大的顺序输出这些数字。

输出

100

101

102

103

104

110

...

440

441

442

443

444

lst=[]

for i in range(0,5):

    for j in range(0,5):

        for k in range(0,5):

            s=i*100+j*10+k

            if s>=100:

                lst.append(s)

for x in lst:

print(x)

[Python]完数输出

一个数如果等于它的因子之和(包含1不包含自身)则称这个数为完数,例如6,6=1+2+3,编程计算2-输入整数n(包含n)之内的所有完数并输出。

输入

一个正整数 n

输出

2 到 n 之间的所有完数(每行一个)

样例输入 复制

10

样例输出 复制

6

n=int(input())

for i in range(2,n):

    s=0 #放在此处,如果放在前面将会一直累加,导致瘫痪

    for j in range(1,i):

        if i%j==0:

            s+=j

    if s==i:

        print(i)

n = int(input())

for i in range(2, n + 1):

    factors = [j for j in range(1, i) if i % j == 0]

    if sum(factors) == i:

        print(i)

[Python]判断素数

给定多个大于 1 的整数,判断是否为素数

输入

输入多行,每行是一个大于 1 的整数或字母 q

输出

对于每一行输入:如果该行是正整数,那么输出一行,输出内容为 T 或 F,代表这个正整数是或不是素数;如果该行是字母 q,则退出程序

样例输入 复制

8888

123

29

q

样例输出 复制

F

F

T

while True:

    s = input()

    if s == 'q':

        break

    else:

        num = int(s)

        is_prime = True

        for i in range(2, int(num**0.5) + 1):

            if num % i == 0:

                is_prime = False

                break

        if is_prime:

            print('T')

        else:

            print('F')

[Python循环]数字求和

求 s = t + tt + ttt + tttt + tt...t 的值,其中 t 是一个小于 10 的自然数,例如 2 + 22 + 222 + 2222 + 22222 (此时共有5个数相加),几个数相加也由键盘输入控制。

输入

输入两个整数,由一个空格隔开,前一个数字代表题目中的 t,另一个数字代表有几个数相加,输出累加和。

输出

输出题目中S的值

t, n = map(int, input().split())

s = 0

num = 0

for i in range(n):

    num = num * 10 + t

    s += num

print(s)

[Python]查找 A 类数

一个正整数的二进制表示中若 1 的个数多于 0 的个数,则称该整数为 A 类数。例如: 2 的二进制表示是 10,其中 1 的个数不多于 0 的个数,因此 2 不是 A 类数;13 的二进制表示是 1101,其中 1 的个数多于 0 的个数,因此 13 是 A 类数。

输入

输入两个用空格隔开的整数 N1 N2

输出

输出区间 [N1, N2] 中的所有 A 类数(每行一个),若该区间内没有 A 类数,则输出 Not Found

样例输入 复制

1 20

样例输出 复制

1 3 5 6 7 11 13 14 15 19

N1, N2 = map(int, input().split())

found = False

for num in range(N1, N2 + 1):

    binary_str = bin(num)[2:]

    count_1 = binary_str.count('1')

    count_0 = binary_str.count('0')

    if count_1 > count_0:

        print(num)

        found = True

if not found:

print("Not Found")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值