6-9 使用函数求特殊a串数列和
给定两个均不超过9的正整数a和n,要求编写函数fn(a,n) 求a+aa+aaa++⋯+aa⋯aa(n个a)之和,fn须返回的是数列和
函数接口定义:
fn(a,n)
其中 a 和 n 都是用户传入的参数。 a 的值在[1, 9]范围;n 是[1, 9]区间内的个位数。函数须返回级数和
裁判测试样例
/* 请在这里填写答案 */
a,b=input().split()
s=fn(int(a),int(b))
print(s)
在这里给出一组输入。例如:
输入样例
2 3
输出样例:
在这里给出相应的输出。例如:
246
代码
def fn(a,n):
s=0
for i in range(1,n+1):
s+=int(str(i)*i)
return s
心路历程
起初我是用了另一个代码,但它确实没有这个来的快以及简易。
def fn(a,n):
sum=0
for i in range(1,n+1):
c=a
for j in range(0,i-1):
c=a+c*10
sum=sum+c
return sum
首先是在理解难度上第二个代码远超第一个代码。
但从严谨程度上,第二个似乎是更胜一筹
那我想着重来讲一下第二个的思路
第一个for 循环是用来表示n个数字相加
第二个for 循环是用来表示每一个相加的数比上一个更进一个位数
那这样就能构成问题中我们所提到的那个式子。求a+aa+aaa++⋯+aa⋯aa(n个a)
当i为1的时候就有c=a 当i为2的时候就有c=aa,当想不明白的时候就举个例子就想明白了。
如果要记的话第一个确实比第二个好记。
6-10 使用函数求素数和
使用函数求素数和
prime(p), 其中函数prime当用户传入参数p为素数时返回True,否则返回False.
PrimeSum(m,n),函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数1<=m<n。
函数接口定义:
在这里描述函数接口:
prime(p),返回True表示p是素数,返回False表示p不是素数
PrimeSum(m,n),函数返回素数和
裁判测试程序样例:
/* 请在这里填写答案 */
m,n=input().split()
m=int(m)
n=int(n)
print(PrimeSum(m,n))
输入样例:
在这里给出一组输入。例如:
1 10
输出样例:
在这里给出相应的输出。例如:
17
代码
def prime(p):
if p<=1:
return False
elae:
for i in range(2,i):
if p%i==0:
return False
return True
def PrimeSum(m,n):
for i in range(m,n+1):
sum=0
if prime(i):
sum+=i
return sum
心路历程
首先在做这个题的时候我犯了一个很大的错误那就是,在第第八段的时候我填了一句
else:
return True
这是一个极大的错误,那在这个代码中他不会报错,但他会输出很多个F/T,这就不用多说了吧,我们都明白。