第六周作业(不完整版)
2020-04-20 11:39:00
计算函数曲线与x轴包围的面积
描述
计算函数曲线在区间(a,b)与x轴包围的面积,可将这个区域平行于y轴切分成相等宽度的小梯形,每个梯形的面积可近似求出,所有梯形面积的和就是函数曲线与x轴包围的面积,也就是函数在给定区间的积分值,dx越小,梯形近似度越高,计算结果越精确,也就是说区间切分段的越多,结果越精确。
参考下图,计算函数sin(x)在区间(a,b)与x轴包围的面积,a,b由用户输入,区间切分多少段也由用户输入。
输入格式
输入包括两行
第一行是由空格分隔的两个实数,代表积分区间
第二行是一个正整数,代表切分数量
输出格式
积分值,结果保留2位小数
1 import math 2 a,b = map(eval,input().split(' ')) 3 n = eval(input()) 4 dx = abs(b-a)/n 5 sum=0 6 for i in range (1,n+1): 7 dy=abs(math.sin(a)*dx) 8 a=a+dx 9 sum=sum+dy 10 print("{0:.2f}".format(sum))
注:①第四行dx的计算,应该加上绝对值符号;
②sin的计算应该调用math库;
哥德巴赫猜想
描述
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。
输入格式
输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。
输出格式
在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。
1 N = int(input()) 2 p1='' 3 q1='' 4 q=0 5 for p in range(2,(int(N/2)+2)): 6 q=N-p; 7 p1="素数" 8 q1="素数" 9 for x in range(2,p): 10 if (p%x)==0: 11 p1="不是素数" 12 for y in range(2,q): 13 if (q%y)==0: 14 q1="不是素数" 15 if p1=="素数" and q1=="素数": 16 print("N = {} + {}".format(p,q)) 17 break
鸡兔同笼B
描述
一个笼子里面关了若干只鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外),已经知道了笼子里面脚的总数feets,则笼子里至少有多少只动物,至多有多少只动物?
思路:①如果输入的a为奇数,可知该数据错误,最多、最少返回值都为零;
②能被4整除的feets,最大值为a除以2,最小值为a除以4;
③能被2整除的feets,最大值为a除以2,最小值为a除以4,再加上1。
输入格式
第一行输入一个正整数,表示测试数据的组数n
接下来的n行,每行一个整数,代表脚的数量
输出格式
输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数间用一个空格分开
如果没有满足要求的答案,则输出用空格分隔的两个0
1 n=eval(input()) 2 for i in range (n): 3 a=eval(input()) 4 if (a % 2 != 0): 5 max=min=0 6 elif (a % 4) == 0: 7 max = a / 2 8 min = a / 4 9 else: 10 max = a / 2 11 min = (a /4)+(a%4)/2 12 print ("%d %d"%(min,max))
与7无关的数
描述
一个正整数,如果它能被7整除,或者它的十进制表示法中某一位的数字为7,啧称其为7相关的数。
求所有小鱼n(n < 100)的与7无关的正整数以及他们的平方和。
输入格式
输入为一个正整数
输出格式
两行
第一行为所有与7无关的数,以列表形式输出,逗号分开
第二行为他们的平方和
1 n=int(input()) 2 list=[] 3 sum=0 4 for i in range(1,n): 5 if i%7!=0 and i//10!=7 and i%10!=7: 6 list.append(i) 7 sum=sum+i*i 8 print(list) 9 print(sum)
完美立方数
描述
费马大定理断言,当整数n > 2时,关于a,b,c的方程a**n = b**n + c**n没有正整数解。
该定理被提出来后,历经三百多年,经历多人猜想辩证,最终在1995年被英国数学家安德鲁.怀尔斯证明。
当然,可以找到大于1的4个整数满足完美立方等式:a**3 = b**3 + c**3 + d**3 (例如12**3 = 6**3 + 8**3 + 10**3)
编写一个程序,对于任意给定的正整数N(N<=100),寻找所有的四元组(a,b,c,d),满足a**3 = b**3 + c**3 + d**3,其中 1 < a,b,c,d <=N
输入格式
正整数N(N <= 100)
按照a的值从小到大,每行输出一个完美立方等式,其中b,c,d按照非降序排列输出。若两个完美立方式中a值相同,则b值小的先输出;在b值相等的情况下,c值小的先输出,在b,c都相等的情况下,d值小的先输出。
输出格式参考输入输出示例。
1 N= int(input()) 2 for a in range(2,N+1): 3 for b in range(2,N+1): 4 for c in range(b,a): 5 for d in range(c,a): 6 if a**3==b**3+c**3+d**3: 7 print("Cube = {},Triple = ({},{},{})" .format(a,b,c,d))