目录
任务描述
本关任务:设计一个程序,求同时满足下列两个条件的分数x的个数: (1)a1<x<b1
,其中a
和b
从键盘输入,a
和b
均为正整数,且a>b
,若输入不正确,则提示“Input Error
” (2)x
的分子分母都是素数,且分母是2
位数。
程序分析
设x=m/n,a=6,b=5
根据条件(2)
,有10≤n≤99
;根据条件(1)
,有5m≤n≤6m
,并且m、n
均为素数。 可以用穷举法来求解这个问题,并设计一个函数来判断一个数是否为素数,是素数返回值为True
,否则为False
。
编程要求
根据提示,在右侧编辑器补充代码,请将判断素数的函数isprime(n)
及主函数main()
的定义补充完整,以实现程序功能。
测试说明
平台会对你编写的代码进行测试:
测试输入1: please input a:6
please input b:5
预期输出1: 满足条件的数有13个
测试输入2: please input a:12
please input b:7
预期输出2: 满足条件的数有25个
测试输入3: please input a:5
please input b:6
预期输出3: Input Error
开始你的任务吧,祝你成功!
def isprime(n):
if n > 1:
for i in range(2,n):#for else语句 执行完for循环内容后才执行else内容
if n%i == 0: #解决了判断2是否为素数的问题
#range(2,2) 会返回空值并跳过此循环语句并执行else
return False
break
else:
return True
else:
return False
a=int(input("please input a:"))
b=int(input("please input b:"))
count = 0
if(a<0 or b<0 or a<=b):
print("Input Error")
else: ##以下为求出满足条件的分数的个数
for Numerator in range(1,100):
if isprime(Numerator)==True:
#固定分子,分母进行遍历
for denominator in range(10,100):
if isprime(denominator)==True:
x = Numerator/denominator
if x>=1/a and x<=1/b:
count +=1
print("满足条件的数有{}个".format(count))