内容正文:
作业 解析与枚举算法
1.编写程序,实现如下功能:有一个五位数,此五位数的最高位和最低位数字分别是2和5,而且这个五位数是一个完全平方数(一个数能表示成某个整数的平方的形式)。现要输出符合上述要求的所有五位数,并统计共有几个数。界面如图所示。
(1)解决这个问题采用的算法是_________ (填“解析算法”或“枚举算法”)。
(2)请在画线处填入合适的代码:
import math
c=0
for i in range(1000): #循环变量i由0至999
x=20005+i*10
if①_______________________________:
print(x)
②__________
print(共有:,c,个)
2.水仙花数是指n位数(n≥3),它的每位上的数字的n次幂之和等于它本身。比如三位数153为水仙花数:13+53+33=153。小明编写一个程序用于查找所有三位数的水仙花数。程序运行界面如下:
(1)请在画线处填入合适的代码:
c=0
for i in range(100,1000):
x1=i%10
x2=①___________
x3=i∥100
if ②______________________________:
print(i)
③__________
print(水仙花数量为:,c)
(2)解决这个问题采用的算法是_________(填“解析算法”或“枚举算法”)。
3.查找100 以内的素数对。素数是指除了1 和它本身之外不再有其他因数的数。两个素数的差为2,称此两个素数为素数对。下列Python 程序的功能是找出100 以内的素数对,成对输出并统计对数。程序代码如下,请在画线处填入合适语句或表达式,使程序完整。
def Isprime(m): #判断是否为素数
flag=True
for i in range(2,m):
if m%i==0:
flag=False
break
①____________
#end Isprime
cnt=0
p1=Isprime(3)
②____________
while i<100:
p2=Isprime(i)
if p1 and p2:
print(str(i-2)+” ”+str(i))
cnt=cnt+1
③____________
i=i+2
print(”共找到”+str(cnt)+”对”)
4.设计一个找数的程序,该程序可以找出所有能被7整除,且至少有一位数为1的三位数,并统计其个数,程序运行如下图所示。
请根据上图运行结果在画线处填入合适的代码:
n=0
for s in range(105,1000,①_____):
a=s∥100
b=s∥10%10
c=s%10
if ②____________________:
n+=1
print(s)
print(③______________________________)
5.若一个正整数从左向右读与从右向左读都一样,我们就将其称为回文数。例如:111,121均是回文数。请编写程序,输出[100,n]之间的所有回文数。程序运行界面如图所示,输入一个正整数,执行程序后输出100~n之间的所有回文数。
请根据上图运行结果在画线处填入合适的代码:
n=①____________
sum=0
for k in range(100,n+1):
x=k
y=0
while x>0:
y=②______________#倒序
x∥=10
if y==k:
print(k)
③____________
print(共找到,sum,个回文数)
6.[2023·衢州一中高一]我国《算经》中经典的“百钱买百鸡”问题,描述如下:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
现A、B、C 三位同学分别编写了计算机程序解决该问题。程序代码如下,请回答下列问题。
A 同学的程序:
na=0
for x in range(21):
for y in range(34):
for z in range(101):
na += 1
if①________:
print(x,y,z)
B 同学的程序:
nb=0
for x in range(21):
for y in range(34):
nb += 1
②________
if x * 5 + y * 3 + z / 3 == 100:
print(x,y,z)
C 同学的程序:
nc = 0
for x in range(0,21, ③________): #画线③处要求填入后算法效率最高
nc += 1
y = 25