《Python语言程序设计》——循环结构程序设计(2)

1.求1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的和

求1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的和

输入格式:

输入一个整数。

输出格式:

输出所求的和。

代码如下:

n=int(input())
sum=0
for i in range(1,n+1):
   for j in range(1,i+1):
    sum=sum+j
print("sum = %d" %sum)
 


 2.最大公因数与最小公倍数 

求两个正整数 a,b 的最大公因数与最小公倍数。

两个数的最大公因数指的是 a,b 共有的约数中最大的一个。

两个数的最小公倍数指的是 a,b 共有的倍数中最小的一个。

输入格式:

在一行中给出两个数字 a,b    (1<=a,b<=1,000,000,000)

输出格式:

在一行中以空格分隔输出 a,b 的最大公因数与最小公倍数。

  代码如下:

def gcd(a, b):
    if a % b == 0:
        return b
    else:
        return gcd(b, a % b)
n, m = input().split()
n = int(n)
m = int(m)
print('{:d} {:d}'.format(gcd(n, m), n*m//gcd(n, m)))

 


3.水仙花数

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。 例如:153=1×1×1+5×5×5+3×3×3。

本题要求编写程序,计算所有N位水仙花数。

输入格式:

输入在一行中给出一个正整数N(3≤N≤5)

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

 代码如下:

n=int(input())
for i in range(10**(n-1),10**(n)):
    sum=0
    for p in str(i):
        sum+=(int(p))**n
    if sum==i:
        print(i)
    

 


4.穷举问题-搬砖

某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。如果想用n人正好搬n块砖,问有多少种搬法?

输入格式:

输入在一行中给出一个正整数n

输出格式:

输出在每一行显示一种方案,按照"men = cnt_m, women = cnt_w, child = cnt_c"的格式,输出男人的数量cnt_m,女人的数量cnt_w,小孩的数量cnt_c。请注意,等号的两侧各有一个空格,逗号的后面也有一个空格。

如果找不到符合条件的方案,则输出"None"

 

代码如下:

n=int(input())
count=0
for cnt_m in range (n):
    for cnt_w in range (n):
        for cnt_c in range (n):
            if ((cnt_m + cnt_w + cnt_c == n) and (cnt_m * 3 + cnt_w * 2 + cnt_c*0.5 == n)):
                count+=1
                print(f'men = {cnt_m}, women = {cnt_w}, child = {cnt_c}')
if(count==0):
    print('None')

 


5.显示指定范围内的素数

输入整数m,将所有大于1小于整数m的素数存入所指定的数组中(数组最多只存放100个素数,超过则提示“OVERFLOW”),输出各素数——若输入的m≤2,则提示“NO”,程序终止。注:素数(Prime Number),亦称质数,指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。

输入格式:

输入一个非0的整数。

输出格式:

素数的输出格式为每个素数5列宽、右对齐、每行显示15个。

 代码如下:

m=int(input())
if m<=2:
    print("NO")
else:
    list=[]
    for i in range(2,m):
        if i >1:
            for j in range(2,i):
                if i%j==0:
                    break
            else:
                list.append(i)
    if len(list)>100:
        print("OVERFLOW")
    else:
        o=0
        for p in list:
            q=str(p)
            print("%5d"%p,end="")
            o=o+1
            if o%15==0:
                print("\n",end="")

 

 


6.泰勒展开式求sinx近似值

用泰勒展开式求sinx近似值的多项式为:

输入x求sinx的近似值,要求误差不大于0.00001。

输入格式:

直接输入一个实型数据。没有其它任何附加字符。

输出格式:

直接输出保留3位小数的实型结果。

 

代码如下:

import math
x=float(input())
a=x
b=1
f=1
n=f*(a/b)
i=1
sum=n
while math.fabs(n)>1e-5:
    i=i+2
    a=x**i
    b=b*(i-1)*i
    f=f*(-1)
    n=f*a/b
    sum=sum+n
print("%.3f"%sum)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值