第1关:素数判定函数
将素数的判定代码定义为一个函数is_prime(n)
,接受传入的实参整数n,返回n是否是素数,n为素数时返回True
,不是素数时返回False
。
系统文件将尝试调用该函数判定输入的一个正整数n是否为素数。
注意:
- 本题只需要定义函数,不需要定义主流程。
- 本题测试平台用时总限时3秒,有用例数据规模较大,请注意算法效率。
- 本题测试用例中保证为整数,但不保证为正整数。
输入格式
无输入
输出格式
如果n为素数,函数返回True
如果n不为素数,函数返回False
def is_prime(n):
if n<=1:
return False
for i in range(2,int(n**0.5)+1):
if n%i==0:
return False
return True
第2关:寻找回文素数
寻找回文素数
如果一个整数是素数,同时其对应的字符串是回文字符串时,便称其为回文素数。例如,131
既是素数,其对应的字符串131
又是回文字符串,所以 131
是回文素数。
输入一个正整数 n
, 请你在一行内输出从小到大排列的小于这个数的所有回文素数,每个数字后面一个空格。
编程要求
根据提示,在右侧编辑器补充代码,完善寻找回文素数的小程序。
测试说明
平台会对你编写的代码进行测试:
输入格式 输入一个正整数
输出格式 一行内输出从小到大排列的小于这个数的所有回文素数,每个数字后面一个空格。
def s(n):
if n<2:
return False
for i in range(2,int(n**0.5)+1):
if n%i==0:
return False
return True
def h(num):
for i in range(num):
if str(i)==str(i)[::-1]and s(i):
print(i,end=' ')
hs=int(input())
h(hs)
3关:寻找反素数
寻找反素数
反素数是指一个将其逆向拼写后也是一个素数的非回文数。例如:17
和 71
都是素数且均不是回文数,所以 17
和 71
都是反素数。
输入一个正整数 n
,输出从小到大顺序输出小于 n
的所有反素数。
编程要求
根据提示,在右侧编辑器补充代码,完善寻找反素数的小程序。
测试说明
平台会对你编写的代码进行测试:
输入格式 输入一个正整数
输出格式 一行内输出从小到大排列的小于这个数的所有反素数,每个数字后面一个空格。
测试输入: 199
预期输出: 13 17 31 37 71 73 79 97 107 113 149 157 167 179
def s(n):
if n<2:
return False
for i in range(2,int(n**0.5)+1):
if n%i==0:
return False
return True
def hw(n):
return str(n)==str(n)[::-1]
def fss(n):
fss=[]
for i in range(2,n):
s2=int(str(i)[::-1])
if not hw(i) and s(i) and s(s2):
print(i,end=' ')
n=int(input())
fss(n)
第4关:哥德巴赫猜想
哥德巴赫猜想
1742
年,哥德巴赫给欧拉的信中提出了以下猜想“任一大于 2
的整数都可写成三个质数之和”。常见的猜想陈述为欧拉的版本,即任一大于 2
的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。比如: 24=5+19
,其中 5
和 19
都是素数。 输入一个正整数 N
,当输入为偶数时,分行按照格式“N=p+q”
输出 N
的所有素数分解,其中 p
、 q
均为素数且 p ≤ q
。当输入为奇数或 N<4
时,输出 'Data error!'
。
编程要求
根据提示,在右侧编辑器补充代码,完善哥德巴赫猜想的小程序。
测试说明
平台会对你编写的代码进行测试:
测试输入: 88
预期输出:
88=5+83
88=17+71
88=29+59
88=41+47
def is_prime(n):
"""判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False"""
#====================Begin===================================
if n<2:
return False
for i in range(2,int(n)//2+1):
if n%i==0:
return False
return True
#======================End=================================
def goldbach_conjecture(num):
""" 哥德巴赫猜想, 接收一个不小于4的正整数为参数。
当参数为不小于4的偶数时,将其分解为两个素数的加和,按小数+数的格式输出。
有多种组合时全部输出,但不输出重复的组合,例如输出8=3+5,不输出8=5+3。
参数为奇数或小于4时,输出'Data error!'
"""
#====================Begin===================================
if num%2==0 and num>=4:
for i in range(num//2+1):
if is_prime(i) and is_prime(num-i):
print(f'{num}={i}+{num-i}')
else:
print("Data error!")
#======================End=================================
if __name__ == '__main__':
positive_even = int(input()) # 输入一个正数
goldbach_conjecture(positive_even)
第5关:本月天数
任务描述
输入一个8位数表示的年月日,读出月份数字并输出该月有多少天。
输入格式
输入一个8位的表示年月日的字符串
输出格式
该月的天数
示例
输入: 20000219 输出: 29
def days_of_month(date_str):
"""根据输入的年月日,返回该月的天数"""
day= 28
year = int(date_str[0:4])
month = int(date_str[4:6])
A=[1,3,5,7,8,10,12]
B=[4,6,9,11]
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
if month == 2:
day = 29
if month in A:
day=31
elif month in B:
day=30
return day
if __name__ == '__main__':
date_in = input() # 输入一个年月日
print(days_of_month(date_in))
第6关:华氏度转摄氏度速查表
任务描述
已知华氏温度转换摄氏温度的计算公式:C=5×(F−32)/9
,其中:C
表示摄氏温度,F
表示华氏温度。 定义函数F2C()
和主流程完成题目要求。 本题要求读入两个华氏温度值f1和f2,打印范围在f1~f2内,每次增加两个华氏温度刻度的速查表。
注意:如果f1>f2,则直接打印error
。
输入格式
输入为一行,为两个不小于32的正整数f1和f2,表示两个华氏温度。两个数之间用逗号隔开,形如f1,f2
。
输出格式
如果f1>f2,输出error
。 如果f1<=f2,则输出华氏转摄氏的温度转换速查表,速查表可能有多行,每行一个温度转换对,形如f1 : c1
,其中c1保留小数点两位。速查表以2华氏度为刻度。
def F2C(f):
c=5*(f-32)/9
return c
f1,f2=map(int,input().split(','))
if f1>f2:
print('error')
else:
for f in range(f1,f2+1,2):
print("{} : {:.2f}".format(f,F2C(f)))
第7关:奇偶求和
任务描述
输入一个完全由数字字符组成的字符串s,分别统计其中出现的奇数和偶数字符数值之和
如输入123456789
输出oddsum=25,evensum=20
本题需要使用自定义函数完成,建议代码框架如下:
def f(n):
......
def p(t):
......
def .......
s=input()
print('oddsum={},evensum={}'.format(......))
示例 1
输入: 123456789
输出: oddsum=25,evensum=20
def count_odd_even(s):
oddsum = 0
evensum = 0
for char in s:
num = int(char)
if num % 2 == 0:
evensum += num
else:
oddsum += num
return oddsum, evensum
s = input()
oddsum, evensum = count_odd_even(s)
print("oddsum={},evensum={}".format(oddsum, evensum))
第8关:字母查找
任务描述
定义一个函数来判断单词m是否可以由字符串n中出现的字母来组成。 本题保证字符串中出现的字母均为小写字母,且不考虑n中的字母使用次数 在两行中分别输入两个字符串m,n
如果m,n 满足条件,则输出FOUND
,否则输出NOT FOUND
如果输入的m包含有除字母外的其他字符,输出ERROR
结束
示例 1
输入: word
world
输出:FOUND
def f(m,n):
for i in m:
if i not in n:
return("NOT FOUND")
else:
return("FOUND")
m = input()
if ():
n = input()
print(f(m,n))
else:
print("ERROR")