【PTA |Python 】浙⼤版《Python 程序设计》题⽬集:第四章(适合Pythno 新⼿。。。
前⾔Hello!⼩伙伴!
⾮常感谢您阅读海轰的⽂章,倘若⽂中有错误的地⽅,欢迎您指出~
⾃我介绍 (ˊᵕˋ) 昵称:海轰 标签:程序猿|C++选⼿|学⽣ 简介:因C语⾔结识编程,随后转⼊计算机专业,有幸拿过国奖、省奖等,已保研。⽬前正在学习C++/Linux(真的真的太难了~) 学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!
第四章
4-1 ⽣成3的乘⽅表 (15 分)
题⽬
输⼊⼀个⾮负整数n,⽣成⼀张3的乘⽅表,输出30~3n的值。可调⽤幂函数计算3的乘⽅。
输⼊格式:
输⼊在⼀⾏中给出⼀个⾮负整数n。
输出格式:
按照幂的递增顺序输出n+1⾏,每⾏格式为“pow(3,i) = 3的i次幂的值”。题⽬保证输出数据不超过长整型整数的范围。输⼊样例:
3
输出样例:
pow(3,0) = 1
pow(3,1) = 3
pow(3,2) = 9
pow(3,3) = 27
解答m = int (input ())for i in range (m +1): print ("pow(3,{:d}) = {:d}".format (i , 3**i ))
1
2
3
4-2 统计素数并求和 (20 分)
题⽬
本题要求统计给定整数_M_和_N_区间内素数的个数并对它们求和。
输⼊格式:
输⼊在⼀⾏中给出两个正整数M和N(1≤M≤N≤500)。
输出格式:
在⼀⾏中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
输⼊样例:
10 31
输出样例:
7 143
解答def issu (num ): if num == 1: return False for i in range (2, num ): if num % i == 0: return False return True m , n = map (int , input ().split ())counts = 0sum = 0for i in range (m , n +1): if issu (i ): counts += 1 sum += i print ("{:d} {:d}".format (counts , sum ))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
4-3 猴⼦吃桃问题 (15 分)
题⽬
⼀只猴⼦第⼀天摘下若⼲个桃⼦,当即吃了⼀半,还不过瘾,⼜多吃了⼀个;第⼆天早上⼜将剩下的桃⼦吃掉⼀半,⼜多吃了⼀个。以后每天早上都吃了前⼀天剩下的⼀半加⼀个。到第N天早上想再吃时,见只剩下⼀个桃⼦了。问:第⼀天共摘了多少个桃⼦?
输⼊格式:
输⼊在⼀⾏中给出正整数N(1<N≤10)。
输出格式:
在⼀⾏中输出第⼀天共摘了多少个桃⼦。
输⼊样例:
3
输出样例:
10
解答m = int (input ())ans = 1for i in range (1, m ): ans = (ans + 1) * 2print (ans )
1
2
3
4
5
4-4 验证“哥德巴赫猜想” (20 分)
题⽬
数学领域著名的“哥德巴赫猜想”的⼤致意思是:任何⼀个⼤于2的偶数总能表⽰为两个素数之和。⽐如:24=5+19,其中5和19都是素数。本实验的任务是设计⼀个程序,验证20亿以内的偶数都可以分解成两个素数之和。
输⼊格式:
输⼊在⼀⾏中给出⼀个(2, 2 000 000 000]范围内的偶数N。
输出格式:
在⼀⾏中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。⼜因为这样的分解不唯⼀(例如24还可以分解为7+17),要求必须输出所有解中p最⼩的解。
输⼊样例:
24
输出样例:
24 = 5 + 19
解答
提交代码 - 1
提交代码 - 2
4-5 求e 的近似值 (15 分)
python新手适合的软件题⽬
⾃然常数 e 可以⽤级数 1+1/1!+1/2!+…+1/n !+… 来近似计算。本题要求对给定的⾮负整数 n ,求该级数的前 n +1 项和。输⼊格式:import math def issu (num ): for i in range (2, int (math .sqrt (num ))+1): if num % i == 0: return False return True m = int (input ())for i in range (2, m ): if issu (i ) and issu (m -i ): print ("{} = {} + {}".format (m , i , m -i )) break
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import math def issu (num ): for i in range (2, int (math .sqrt (num ))+1): if num % i == 0: return False return True m = int (input ())for i in range (2, m //2+1): if issu (i ) and issu (m -i ): print ("{} = {} + {}".format (m , i , m -i )) break
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论