第四章的编程题目已经总结完毕了,欢迎大家分享对题目算法的见解~
目录
第一题:生成输入数的乘方表
输入一个非负数和正整数n,5<=n<=9,生成一张输入数的乘方表。
a,b = map(float,input().split())
for i in range(int(b) + 1):
print("{}**{}={:.2f}".format(a, i, a**i))
第二题:判断素数
判断一个给定的正整数是否素数
num = int(input())
for i in range(num):
data = int(input())
for j in range(2,data // 2):
if data % j == 0:
print('No')
break
else:
print('Yes')
第三题:显示指定范围的素数并求和
本题要求显示给定整数M和N区间内素数并对它们求和。
import math
a,b = map(int,input().split())
result = []
for i in range(a + 1,b):
for j in range(2,i//2 + 1):
if i % j == 0:
break
else:
result.append(i)
for i in range(len(result)):
print(result[i], end = ' ')
if (i+1) % 5 == 0:
print()
if len(result) % 5 != 0:
print()
if result != []:
print('amount=%d sum=%d'%(len(result),sum(result)))
else: #最后一个测试用例是a,b之间没有素数,但是输出格式为两行:第一行为空,第二行为数量和总和
print()
print('amount=%d sum=%d'%(len(result),sum(result)))
这道题被最后一个测试用例绊了很久,最后终于发现是如果输入a、b两个数之间没有素数时,仍然会输出一行空值并换行,因此在程序最后需要对result的长度(或者result是否为空)做一下判断。
第四题:猴子吃桃问题
一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?4
day = int(input())
result = 1
for i in range(day - 1):
result = (result+ 1) * 2
print(result)
第五题:求分数序列前N项和
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
num = int(input())
result = 0
first_deno = 2 #首项分母
first_num = 1 #首项分子
for i in range(num):
result += first_deno / first_num
mid = first_deno
first_deno = first_deno + first_num
first_num = mid
print("%.2f" %result)
第六题:运费打折问题
weight,mile = map(float,input().split())
cost = 1
if mile >= 3000:
cost *= 0.85
elif mile < 3000 and mile >= 2000:
cost *= 0.9
elif mile < 2000 and mile >= 1000:
cost *= 0.92
elif mile < 1000 and mile >= 500:
cost *= 0.95
elif mile < 500 and mile >= 250:
cost *= 0.98
print(int(cost * weight * mile))
第七题:最大公约数和最小公倍数
本题要求两个给定正整数的最大公约数和最小公倍数。
给定数A、B,则两者的最小公倍数(LCM)和最大公约数(GCD)满足: ,所以只需要求得A、B的最大公约数即可。
a,b = map(int,input().split())
min_ = 1
for i in range(1,min(a,b) + 1):
if a % i == 0 and b % i == 0:
min_ = i
max_ = a * b / min_
print('%d %d' %(min_,max_))