1.写出下列程序的运行结果
def foo(num):
for j in range(2, num // 2+1):
if num % j == 0:
return False
else:
return True
def main():
n,c = 8,0
for i in range(2, n+1):
if foo(i):
c += 1
print(c)
if __name__ == '__main__':
main()
2.写出下列程序的运行结果
def foo(list, num):
if num == 1:
list.append(0)
elif num == 2:
foo(list, 1)
list.append(1)
elif num > 2:
foo(list, num-1)
list.append(list[-1] + list[-2])
mylist = []
foo(mylist, 10)
print(mylist)
3.下列程序的作用是求两个正整数 m,n 的最大公约数,请补充程序
def gcd(m,n):
if m<n:
m,n=n,m
if m%n==0:
return n
else:
return gcd(n,m%n)
ans=gcd(84,342)
print(ans)
4.计算空间一点 p(x,y,z)的方向弦,其计算公式如下
import math
def foo(x,y,z):
a=x/math.sqrt(x**2+y**2+z**2)
b=y/math.sqrt(x**2+y**2+z**2)
c=z/math.sqrt(x**2+y**2+z**2)
print(a,b,c)
x,y,z=map(int,input().split())
foo(x,y,z)
5.定义一个函数,它返回整数 n 从右边开始数的第 k 个数字
def positive_number(m,n):
c=0
while(m>0 and n>0):
c=int(m%10)
m=int(m/10)
n -= 1
if(n==0):
return c
n=int(input('请输入整数n:'))
k=int(input('请输入位置K:'))
print(positive_number(n,k))
6.定义一个函数,如果数字 d 在整数 n 的某位中出现,则返回 True,否则返回 False
def fun(d,n):
if str(d) in str(n):
return True
else:
return False
d=input('请输入d的值:')
n=input('请输入n的值:')
print(fun(d,n))
7.输入x和n的值,求y值。要求分两种情况实现:直接在程序中定义函数 s(x,n);在模块中定义函数 s(x,n)
import math
def s(x,n):
s=0
for i in range (1,n+1):
fm=1
for j in range(1,i+1):
fm*=j
s+=(x**2)/fm
return s
x,n=map(int,input('请输入x和n的值:').split())
y=s(x,n)/(s(x+1.75,n)+s(x,n+5))
print(y)
8.若 Fibonacci 数列的第 n 项记为 fib(a,b,n),则有下面的递归定义,用递归方法求 5000 之内的最大的一项
def fib(a,b,n):
if n==1:
return a
if n==2:
return b
return fib(b,a+b,n-1)
maxitem=0
num=0
i=1
while True:
maxitem = fib(1,1,i)
if(maxitem>=5000):
print(num)
break
num=maxitem
i+=1