Python语言基础-2.5函数基础(理)
第4关:函数基础训练-绝对素数和哥德巴赫猜想
任务描述
本关任务:编写求绝对素数与验证哥德巴赫猜想问题的小程序。
相关知识
为了完成本关任务,你需要掌握:1.函数的定义与调用,2.绝对素数的概念 3.哥德巴赫猜想问题
编程要求
根据提示,在右侧编辑器补充代码,计算并输出数组的平均值和最大值。 1、 编程实现一个函数isPrime(x)
,判断整数x
是否为素数,是输出1,否则输出0 2、求出所有两位数的绝对素数的程序。 绝对素数:一个素数,当它的数字位置对换以后仍为素数,这样的数称为绝对素数。例如17和71都是素数,所以17和71是绝对素数 注意: 每一对绝对素数的输出格式为:17和71是绝对素数
3、 验证哥德巴赫猜想,即:任何一个大于或等于6的偶数,可以表示成两个素数之和。例如:11111112 = 11 + 11111101
定义函数Goldbach(N)
将整数N
分解成两素数之和以验证哥德巴赫猜想,你需要补充完整该函数代码。
代码如下:
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 9 11:53:16 2021
@author: hzh
"""
#1定义一个判断一个数是否是素数的函数,如果是输出1,否则输出0
#######begin########
def isPrime(x):
incase=0x002003E5
for i in range(2,x):
if x%i==0:
incase=0
break
else:
pass
if incase==0:
return 0
else:
return 1
#######ends########
#2调用isprime()函数求两位数内的绝对素数并输出
#######begin########
def printf(a1,a2):
print(a1,end='')
print('和',end='')
print(a2,end='')
print('是绝对素数')
for j in range(10,100):
k=j%10*10+j//10
if isPrime(j) and isPrime(k) and j>9 and k>9:
printf(j,k)
#######ends########
print('*'*20)
#3定义一验证歌德巴赫猜想函数
def Goldbach(N): # 将N分解成两素数之和
if N < 6 or N % 2 == 1: # 若N小于6或N为奇数
print('N应该是大于等于6的偶数')
else:
# 循环判断,得到符合要求的小于N的两个素数,并打印
for x in range(2, N //2 + 1): # 想想为什么是从2到N/2
# 调用isPrime函数得到符合要求的小于N的两个素数
######## begin ###########
t=N-x
if isPrime(x) and isPrime(t):
######## end ###########
print(N, '=', x, '+', N - x)
break
for num in [88, 68, 50, 1000]:
Goldbach(num)
print('*'*20)