本系列文章为同学困扰的python做出作业答案汇总,答案皆为本学生自己边学边做汇总上传的,编排不易,希望大家喜欢。
本作业所有内容均在github上有留存,每次作业github上会最先发布,CSDN上需要编辑将会慢一两天,着急完成作业的同学可以前往github抢先学习:Opve2/homework: 这个作业 (github.com)
第一关 :素数判定
def is_prime(n):
"""判断素数的函数,接收一个正整数为参数,返回值是布尔类型。参数是素数时返回True,否则返回False"""
#==================Begin=================================
# 补充你的代码
if n < 2:
return False
for i in range(2,n):
if n % i == 0:
return False
else:
return True
#===================End================================
positive_int = int(input()) # 输入一个正整数
if is_prime(positive_int):
print(f'{positive_int}是素数')
else:
print(f'{positive_int}不是素数')
第二关:输出N以内的所有素数
def is_prime(n):
"""判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False。减小判定区间,减少循环次数,提升效率"""
#======================Begin=================================
# 补充你的代码
if n < 2:
return False
for i in range(2,n):
if n % i == 0:
return False
else:
return True
#=======================End================================
def output_prime(number):
"""接收一个正整数为参数,遍历从0到number之间的所有整数
在一行中输出不大于number的所有素数,每个数字后一个空格,函数无返回值。"""
#======================Begin=================================
# 补充你的代码
for i in range(number+1):
if is_prime(i):
print(i,end=" ")
#=======================End================================
positive_int = int(input())
output_prime(positive_int)
第三关: 寻找回文素数
def is_prime(n):
"""判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False。减小判定区间,减少循环次数,提升效率"""
#======================Begin=================================
# 补充你的代码
if n < 2:
return False
for i in range(2,n):
if n % i == 0:
return False
else:
return True
#=========================End==============================
def plalindrome_prime(number):
"""接收一个正整数参数number,遍历从0到number之间的所有整数,
若某个数是素数,且转为字符串后是回文字符串,则称其中回文素数
找出并在同一行中输出小于number的所有回文素数,每个数字后一个空格,函数无返回值。"""
#======================Begin=================================
# 补充你的代码
for i in range(number): #遍历
if str(i) == str(i)[::-1] and is_prime(i):
print(i,end=' ') #输出从小到大排列的小于这个数的所有回文素数
#=========================End==============================
positive_int = int(input())
plalindrome_prime(positive_int)
第四关:寻找反素数
def is_prime(n):
"""判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False。减小判定区间,减少循环次数,提升效率"""
#======================Begin=================================
# 补充你的代码
if n < 2:
return False
for i in range(2,n):
if n % i == 0:
return False
else:
return True
#========================End===============================
def reverse_prime(number):
"""接收一个正整数参数,找出并在同一行内输出所有小于number的反素数,每个数字后一个空格。
反素数指某数i及其逆序数都是素数,但数i对应的字符串不是回文字符串。函数无返回值"""
#======================Begin=================================
# 补充你的代码
for i in range(number): #遍历
if str(i) != str(i)[::-1] and is_prime(i) and is_prime(int(str(i)[::-1])):
print(i,end=' ') #输出一行内输出从小到大排列的小于这个数的所有反素数
#========================End===============================
positive_int = int(input())
reverse_prime(positive_int)
第五关:哥德巴赫猜想
def is_prime(n):
"""判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False"""
#====================Begin===================================
# 补充你的代码
if n < 2:
return False
for i in range(2,n):
if n % i == 0:
return False
else:
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)