Python-绝对素数和哥德巴赫猜想

17 篇文章 17 订阅

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)

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值