当前位置:   article > 正文

4.3python素数及运用_编写一个能输出n以内的所有素数的python小程序。

编写一个能输出n以内的所有素数的python小程序。

第1关 素数判定

本关任务:编写一个能进行素数判定的小程序。

  1. def is_prime(n):
  2. """判断素数的函数,接收一个正整数为参数,返回值是布尔类型。参数是素数时返回True,否则返回False"""
  3. #==================Begin=================================
  4. # 补充你的代码
  5. if n < 2 :
  6. return False
  7. else:
  8. for i in range(2,n):
  9. if n % i ==0:
  10. return False
  11. return True
  12. #===================End================================
  13. positive_int = int(input()) # 输入一个正整数
  14. if is_prime(positive_int):
  15. print(f'{positive_int}是素数')
  16. else:
  17. print(f'{positive_int}不是素数')

第2关 输出N以内的所有素数

本关任务:编写一个能输出N以内的所有素数的小程序。

输入格式输入一个正整数

输出格式在同一行中从小到大依次输出不大于 n 的全部素数,每个数字后面一个空格。

测试输入:97

预期输出:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

  1. def is_prime(n):
  2. """判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False。减小判定区间,减少循环次数,提升效率"""
  3. #======================Begin=================================
  4. # 补充你的代码
  5. if n < 2 :
  6. return False
  7. else:
  8. a = int(n**(1/2)+1)
  9. for i in range(2,a):
  10. if n % i ==0:
  11. return False
  12. return True
  13. #=======================End================================
  14. def output_prime(number):
  15. """接收一个正整数为参数,遍历从0到number之间的所有整数
  16. 在一行中输出不大于number的所有素数,每个数字后一个空格,函数无返回值。"""
  17. #======================Begin=================================
  18. # 补充你的代码
  19. for i in range(number+1):
  20. if is_prime(i):
  21. print(i,end=" ")
  22. #=======================End================================
  23. positive_int = int(input())
  24. output_prime(positive_int)

第3关 寻找回文素数

本关任务:编写一个能寻找回文素数的小程序。

如果一个整数是素数,同时其对应的字符串是回文字符串时,便称其为回文素数。例如,131 既是素数,其对应的字符串“131”又是回文字符串,所以 131 是回文素数。

输入一个正整数 n , 请你在一行内输出从小到大排列的小于这个数的所有回文素数,每个数字后面一个空格。

  1. def is_prime(n):
  2. """判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False。减小判定区间,减少循环次数,提升效率"""
  3. #======================Begin=================================
  4. # 补充你的代码
  5. if n < 2 :
  6. return False
  7. elif n == 2:
  8. return True
  9. else:
  10. a= int(n**(1/2)+1)
  11. for i in range(2,a+1):
  12. if n % i ==0:
  13. return False
  14. return True
  15. #=========================End==============================
  16. def plalindrome_prime(number):
  17. """接收一个正整数参数number,遍历从0到number之间的所有整数,
  18. 若某个数是素数,且转为字符串后是回文字符串,则称其中回文素数
  19. 找出并在同一行中输出小于number的所有回文素数,每个数字后一个空格,函数无返回值。"""
  20. #======================Begin=================================
  21. # 补充你的代码
  22. for i in range(number):
  23. if is_prime(i) and str(i) ==str(i)[::-1]:
  24. print(i,end = " ")
  25. #=========================End==============================
  26. positive_int = int(input())
  27. plalindrome_prime(positive_int)

第4关 寻找反素数

本关任务:编写一个寻找反素数的小程序。

反素数是指一个将其逆向拼写后也是一个素数的非回文数。例如:1771 都是素数且均不是回文数,所以 1771 都是反素数。

输入一个正整数 n ,输出从小到大顺序输出小于 n 的所有反素数。

  1. def is_prime(n):
  2. """判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False。减小判定区间,减少循环次数,提升效率"""
  3. #======================Begin=================================
  4. # 补充你的代码
  5. if n < 2 :
  6. return False
  7. elif n == 2:
  8. return True
  9. else:
  10. a= int(n**(1/2)+1)
  11. for i in range(2,a+1):
  12. if n % i ==0:
  13. return False
  14. return True
  15. #========================End===============================
  16. def reverse_prime(number):
  17. """接收一个正整数参数,找出并在同一行内输出所有小于number的反素数,每个数字后一个空格。
  18. 反素数指某数i及其逆序数都是素数,但数i对应的字符串不是回文字符串。函数无返回值"""
  19. #======================Begin=================================
  20. # 补充你的代码
  21. for i in range(number):
  22. if is_prime(i) and is_prime(int(str(i)[::-1])) and str(i) !=str(i)[::-1]:
  23. print(i,end = " ")
  24. #========================End===============================
  25. positive_int = int(input())
  26. reverse_prime(positive_int)

第5关 哥德巴赫猜想

哥德巴赫猜想

1742 年,哥德巴赫给欧拉的信中提出了以下猜想“任一大于 2 的整数都可写成三个质数之和”。常见的猜想陈述为欧拉的版本,即任一大于 2 的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。比如: 24=5+19,其中 519 都是素数。输入一个正整数 N,当输入为偶数时,分行按照格式“N = p + q” 输出 N 的所有素数分解,其中 pq 均为素数且 p ≤ q。当输入为奇数或 N<4 时,输出 'Data error!'

  1. def is_prime(n):
  2. """判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False"""
  3. # ====================Begin===================================
  4. # 补充你的代码
  5. if n < 2:
  6. return False
  7. elif n == 2:
  8. return True
  9. else:
  10. a = int(n ** (1 / 2) + 1)
  11. for i in range(2, a + 1):
  12. if n % i == 0:
  13. return False
  14. return True
  15. # ======================End=================================
  16. def goldbach_conjecture(num):
  17. """ 哥德巴赫猜想, 接收一个不小于4的正整数为参数。
  18. 当参数为不小于4的偶数时,将其分解为两个素数的加和,按小数+数的格式输出。
  19. 有多种组合时全部输出,但不输出重复的组合,例如输出8=3+5,不输出8=5+3。
  20. 参数为奇数或小于4时,输出'Data error!'
  21. """
  22. # ====================Begin===================================
  23. # 补充你的代码
  24. if 4<=num and num % 2 == 0:
  25. for i in range(1,num + 1):
  26. n = num - i
  27. if is_prime(i) and is_prime(n) and i<=n :
  28. print(f"{num}={i}+{n}")
  29. else:
  30. print('Data error!')
  31. # ======================End=================================
  32. if __name__ == '__main__':
  33. positive_even = int(input()) # 输入一个正数
  34. goldbach_conjecture(positive_even)

今天的分享就到这里了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/593235
推荐阅读
相关标签
cppcmd=keepalive&