Python 作业答疑

news2024/11/24 19:54:16

1. 哥德巴赫猜想

问题描述:

2000以内的不小于4的正偶数都能够分解为两个素数之和(即验证歌德巴赫猜想对2000以内的正偶数成立)。

问题分析:

根据问题描述,为了验证歌德巴赫猜想对2000以内的正偶数都是成立的,要将整数分解为两部分,然后判断分解出的两个整数是否均为素数。若是,则满足题意,否则应重新进行分解和判断。

import math

# 判断是否为素数
def fun(n):
    if n == 2:
        return 1  # n是2,返回1
    if n % 2 == 0:
        return 0  # n是偶数,不是素数,返回0
    i = 3
    while i <= math.sqrt(n):
        if n % i == 0:
            return 0  # n是奇数,不是素数,返回0
        i += 2
    return 1  # n是除2以外的素数,返回1

# 验证哥德巴赫猜想
def guess(n):
    ok = 0  # 进入循环前先置标志位
    i = 2
    while i <= (n // 2):
        if fun(i):
            if fun(n - i):
                print("%d  %d\n" % (i, n - i))  # i和n-i都是素数,则打印
                ok = 1
        if i != 2:
            i += 1
        if ok == 1:
            break  # 已打印出所需要的输出结果,跳出循环
        i += 1

if __name__ == "__main__":
    while True:  # 循环输入
        n = int(input())
        guess(n)  # 调用函数验证哥德巴赫猜想

2.可逆素数

问题描述:

请从小到大输出所有4位数的可逆素数。可逆素数是指一个素数将其各位数字的顺序倒过来构成的反序数也是素数。

问题分析:

题目的难点已经不在于判断一个数是否为素数,而在于如何求一个整数的反序数。

算法设计:

import math
# 判断素数
def fun(n):
    if n <= 1:
        return 0;  # n<1时显然不是素数,故返回0
    if n == 2:
        return 1  # n=2,是素数,返回1
    if n % 2 == 0:
        return 0  # n是偶数,不是素数,返回0
    for i in range(3, int(math.sqrt(n) + 1)):
        if n % i == 0:
            return 0  # n是奇数,不是素数,返回0
        i += 2
    return 1  # n是除2以外的素数,返回1

if __name__ == "__main__":
    count = 0  # 计数器
    # 穷举法
    for a in range(1, 9 + 1):  # 千位
        for b in range(0, 9 + 1):
            # 百位
            for c in range(0, 9 + 1):  # 十位
                for d in range(1, 9 + 1):  # 个位
                    if fun(a * 1000 + b * 100 + c * 10 + d):  # 判断4位整数是否为素数
                        # 判断4位逆序的整数是否为素数
                        if fun(a + b * 10 + c * 100 + d * 1000):
                            if count % 10 == 0:  # 每10个数就换行
                                print()
                            print("%d   " % (a * 1000 + b * 100 + c * 10 + d), end="")
                            count += 1
        print("\n4位可逆素数共有%d个" % count)

3.孪生素数

问题描述:

所谓孪生素数指的是间隔为2的两个相邻素数,因为它们之间的距离已经近得不能再近了,如同孪生兄弟一样,故将这一对素数称为孪生素数。

问题分析:

显然,最小的一对孪生素数是(1,3)。我们可以写出3~100以内的孪生素数,一共有8对,分别是(3,5),(5,7),(11,13),(17,19),(29,31),(41,43),(59,61)和(71,73)。随着数字的增大,孪生素数的分布也越来越稀疏,人工寻找孪生素数变得非常困难。

孪生素数是指若a为素数,且a+2也是素数,则素数a和a+2称为孪生素数。

算法设计:

import math
# 判断n是否为素数
def prime(n):
    k = math.sqrt(n) + 1
    i = 2
    while i <= k:
        if n % i == 0:
            return 0  # n能被j整除,不是素数,返回0
        i += 1
    return 1  # n是素数,返回1

if __name__ == "__main__":
    count = 0  # 计数器
    print("3到1000之间的孪生素数:")
    for i in range(3, 1000):
        if prime(i) and prime(i + 2):
            print("(%-3d, %3d)  " % (i, i + 2), end="")
            count += 1
            if count % 5 == 0:  # 每5个数换一行
                print()
    print("\n1000以内的孪生素数共有%d对" % count)

二、Python 二班作业

1. 黑洞数

问题描述:

黑洞数又称陷阱数,是指任何一个数字不全相同的整数,在经过有限次“重排求差”操作后,总会得到某一个或一些数,这些数即为黑洞数。“重排求差”操作是将组成一个数的各位数字重排,将得到的最大数减去最小数。

例如,207的“重排求差”操作序列是:720-027=693,963-369=594,954-459=495,此时再进行“重排求差”操作不会发生改变。再用208计算一次,也是停止到495,所以495是三位黑洞数。

编程求三位数中的“黑洞数”。

问题分析:

根据“黑洞数”定义,对于任意一个数字不全相同的整数,最后结果总会掉入到一个黑洞圈或黑洞数里,最后结果一旦为黑洞数,无论再重复进行多少次的“重排求差”操作,结果都是一样的,因此可把结果相等作为判断“黑洞数”的依据。

本题关键:分解 3 位整数,重新排列后找到最大值和最小值。

算法设计:

# 原来的两数相减之差
pre_cha = 0
# 当前两数相减之差
cur_cha = 0
# 已经数字
num = 890
#
while True:
    # 分解数字
    lst = list(str(num))
    # 转换类型
    lst = [int(i) for i in lst]
    # 降序
    lst.sort()
    # 最小值
    mi = lst[0] * 100 + lst[1] * 10 + lst[2]
    # 最大值
    lst.sort(reverse=True)
    ma = lst[0] * 100 + lst[1] * 10 + lst[2]
    # 最大值减最小值之差
    cur_cha = ma - mi
    if cur_cha == pre_cha:
        break
    num = cur_cha
    pre_cha = cur_cha
print(pre_cha)

2. 多项式之和

问题描述:

计算下列多项式的值:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

问题分析:

每一项分式的分母都是对应项标记的阶乘。所以只要求出每一项的阶乘再将其倒数和加在一起即为所求多项式的结果。

算法设计:

n = int(input("请输入一个整数n: "))
s = 0  # s记录多项式的和
i = 1
while i <= n:  # i控制对应的项数
    t = 1  # t记录每一项分式的分母,每次循环之前给t赋初值
    j = 1
    while j <= i:
        t = t * j  # 每一项的阶乘
        j += 1
    s = s + 1 / t
    i += 1
print("%f" % s)

3.列出真分数序列

问题描述:

按递增顺序依次列出所有分母为40、分子小于40的最简分数。

问题分析:

分子和分母只有公因数1的分数,或者说分子和分母是互质数的分数,叫作最简分数,又称既约分数。如2/38/93/8等就是最简分数。

求分子小于40的最简分数,可以对分子采用穷举的方法。根据最简分数的定义可知,分子和分母的最大公约数为1,因此可以利用最大公约数的方法,判定分子与40是否构成真分数。

算法设计:

print("分母为40,分子小于40的最简分数有:")
n = 0  # 计数器,记录最简分数的个数
for i in range(1, 40):  # 穷举40以内的全部分子
    num1 = 40  # 分母
    num2 = i  # 分子
    # 采用辗转相除法求出分子与分母的最大公约数
    while num2 != 0:
        temp = num1 % num2
        num1 = num2
        num2 = temp
    if num1 == 1:  # 若最大公约数为1,则为最简真分数
        n += 1
        print("%2d/40 " % i, end=" ")
    if n % 8 == 0:  # 每8个一行
        print()

三、Python 三班作业

1. 三色球

问题描述:

一个口袋中放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少种可能的颜色搭配?

问题分析:

根据问题描述可设任取的8个球中红球为m个,白球为n个,则黑球为8-m-n个。又已知12个球中有3个红球、3个白球、6个黑球,因此,m的取值范围为[0,3]n的取值范围为[0,3],黑球的个数小于等于6,即8-m-n≤6

算法设计:

由上述分析可知,红、白、黑三种颜色球的个数的取值范围已经确定了,现在要求的是所有可能的颜色搭配情况,因此可以使用循环结构检测m、n范围内的所有可能取值,再代入8-m-n≤6中进行验证,能够满足条件8-m-n≤6的那些mn8-m-n的组合即为问题的解。

# 从12个球中任取8个,红球m个,白球n个,黑球8-m-n个
# m的取值范围为[0,3],因此n的取值范围为[0,3],黑球的个数小于等于6,即8-m-n≤6
print("\t 红球 \t 白球 \t 黑球")
print("........................")
num = 0
for m in range(0, 4):
    for n in range(0, 4):
        if 8-m-n <= 6:
            num += 1
            print("%2d:  %d \t\t %d \t\t %d" %(num, m, n, 8-m-n))

2. 求自然数

问题描述:

四个连续的3位自然数的和是一个在400440之间的三位数,并且能被9整除,这四个自然数分别是多少?

问题分析:

假设第 1 个自然数为 n,因存在连续关系,则后 3 个自然数为 n+1,n+2,n+3。且 n+(n+1)+(n+2)+(n+3) 大于等于 400,小于等于 440。可分析得到一个结论,任一数字都不可以大于 400

算法设计:

for n in range(100,110):
    if 4*n+6>=400 and 4*n+6<=440 and (4*n+6) % 9==0:
        print(n)

3. 爱因斯坦的数学题

问题描述:

爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶,则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问在11000内,有多少个数能满足?

问题分析:

此问题的本质就是求解一个同时能满足如下条件的数字。

  • 2整除余 1
  • 3整除余数 2
  • 5 整除余数为 4
  • 6 整除余数为 5
  • 7 整除余数为 0

算法设计:

sum = 0
for i in range(7, 1000 + 1,2):
    # 阶梯数所满足的条件
    if (i % 7 == 0) and (i % 6 == 5) and (i % 5 == 4) and (i % 3 == 2):
        sum += 1  # sum记录1~n之间满足条件的阶梯个数
        print("%d" % i)
print("在1-%d之间,有%d个数可以满足爱因斯坦对阶梯的要求。" % (1000, sum))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1292584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

html+css+js 三亚旅游网页设计与制作实例(6个页面)

一、作品介绍 HTMLCSSJS网页设计与制作&#xff0c;三亚旅游网页设计与制作实例&#xff0c; 本实例适合于初学HTMLCSSJS的同学。该案例里面有divcss的样式布局设置&#xff0c;这个实例比较全面&#xff0c;有一级页、二级页、详情页、输入表单等&#xff0c;共6个页面。本文…

(Gemini)双子座:一系列高能力多模态模型的前世今生

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

推荐一个开源的监控程序-Uptime

先放几张截图介绍一下 现场演示 尝试一下&#xff01; 东京演示服务器&#xff1a;https://demo.uptime.kuma.pet&#xff08;由 Uptime Kuma 赞助商 赞助&#xff09; 这是一个临时的现场演示&#xff0c;所有数据将在10分钟后删除。使用距离您较近的一个&#xff0c;但我建…

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架

1.安装ThinkPHP6框架 这里我们使用的是composer安装的安装方式&#xff0c;请确保电脑已经安装了composer&#xff0c;如未安装可查看Composer 安装与使用 | 菜鸟教程 composer create-project topthink/think tp 上面命令安装的是稳定版的&#xff0c;也是最新的稳定版&…

Pygame游戏实战七:求解迷宫

介绍模块 本游戏使用的是由Pycharm中的pygame模块来实现的&#xff0c;也可以在python中运行。通过Pygame制作一个迷宫&#xff0c;迷宫可以自定义&#xff0c;出入口&#xff0c;通过移动来逃离迷宫&#xff0c;走到出口&#xff0c;看看这个是你小时候玩的游戏吗&#xff1f…

FFA 2023 明日开幕,Flink 智能诊断、小红书流批一体实践精彩来袭

近年来&#xff0c;流批一体的技术思想势头火热&#xff0c;即“将批处理和流处理相结合&#xff0c;实现更好的数据处理能力”&#xff0c;已成功从理论层面走进现实世界。Flink 是一款高吞吐量、低延迟的流处理引擎&#xff0c;具备统一接口、高性能、低延迟、容错性和可扩展…

软著项目推荐 深度学习验证码识别 - 机器视觉 python opencv

文章目录 0 前言1 项目简介2 验证码识别步骤2.1 灰度处理&二值化2.2 去除边框2.3 图像降噪2.4 字符切割2.5 识别 3 基于tensorflow的验证码识别3.1 数据集3.2 基于tf的神经网络训练代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x…

@德人合科技 | 数据透明加密防泄密系统\文件文档加密\设计图纸加密|源代码加密防泄密软件系统,——防止内部办公终端核心文件数据/资料外泄!

一款专业的数据防泄密管理系统&#xff0c;它采用了多种加密模式&#xff0c;包括透明加密、半透明加密和落地加密等&#xff0c;可以有效地保护企业的核心数据安全。 PC端访问地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee …

AWR1642 boost开发板支持的TI参考设计

打开radar_toolbox_1_30_00_05\source\ti\examples\examples_overview,通过输入“1642”查找AWR1642 BOOST支持的参考设计,通过筛选,支持AWR1642 BOOST的参考设计如下: 挑选出两个参考设计上手,一个是“nonos_oob_16xx",不带OS;另一个是”short range radar“,比较…

单月创作15个10w+作品,内容创作迎来新浪潮

据11月16日腾讯发布的Q3财报显示&#xff0c;本季度视频号总播放量同比增长超过50%&#xff0c;原创内容播放量增长强劲&#xff0c;视频号作为微信生态内最具增长潜力的产品之一&#xff0c;已然成为腾讯营收新动力。 为帮助大家更好地洞察视频号平台的内容趋势及创作风向&…

矿山数字孪生-只需要这几步就能快速构建智慧矿山管理系统

在万物互联、智慧协同的技术浪潮下&#xff0c;矿山日常管理及运营中使用到的智慧化平台越来越丰富&#xff0c;而各个管理子系统间往往独立&#xff0c;相互为数据孤岛。智慧矿山管理平台就是将各个孤岛中的数据及功能汇集起来&#xff0c;形成统一的、联动的管理门户。 智慧…

负债127万美元的【后羿国际】申请1亿美元纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于深圳的后羿国际&#xff08;HOUYI DIGITAL INTERNET INDUSTRY TECHNOLOGY CO., LTD&#xff09;近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯…

LabVIEW使用单板RIO开发远程监控电源信号

LabVIEW使用单板RIO开发远程监控电源信号 设计和构建用于智能电网的本地功耗分析系统&#xff0c;主要服务于领先的电力监控设备设计者和制造商。随着智能电网投资的增加&#xff0c;对于能够有效处理替代电源&#xff08;如太阳能和风能&#xff09;间歇性功率水平的技术需求…

Swift 中 User Defaults 的读取和写入

文章目录 前言介绍 User Defaults共享 User DefaultsUser Defaults 存储数据类型响应更改监控 User Defaults 更改覆盖User Defaults 设置考虑的替代方案Keychain 用于安全性用于跨平台的 CloudKit 结论 前言 User Defaults 是 Swift 应用程序存储在应用启动之间保持的首选项的…

如何在 PyQt 中实现异步数据库请求

需求 开发软件的时候不可避免要和数据库发生交互&#xff0c;但是有些 SQL 请求非常耗时&#xff0c;如果在主线程中发送请求&#xff0c;可能会造成界面卡顿。这篇博客将会介绍一种让数据库请求变得和前端的 ajax 请求一样简单&#xff0c;且不会阻塞界面的异步请求方法。 实…

kepler.gl部署在线说明文档

1 概述 1.1 介绍 1、Kepler.gl 是一个强大的开源地理空间分析工具&#xff0c;用于大规模数据集的可视化。它由 Uber 的数据可视化团队开发&#xff0c;并且是基于 Web 技术构建的。Kepler.gl 涉及到以下几个主要技术领域&#xff1a; WebGL: Kepler.gl 通过 WebGL 进行渲染…

jetbrains 新编辑器 Fleet 修改主题颜色

当前Fleet主题只有五种 分别是 1、Dark Purple 2、Fleet Dark 3、Fleet Light 4、Gray 5、Sync with OS 其实这几种都不太好看 对眼睛不友好 可以选择一个白色主题进行自定义编辑 由于参数太多我直接全局替换把白色White换成了Yellow 70 为啥是Yellow 70&#xff1f; 把…

推荐一个可以记录历史进价的进销存软件?

“我是卖数码产品的&#xff0c;数码产品价格变动是比较大的&#xff0c;每次采购时候我都会多家对比价格&#xff0c;再决定在哪个厂家进货。所以基本上我每次进价价格都不一样&#xff0c;但是之前的询价情况又很难一一单独记录&#xff0c;让我采购的时候很被动。” “准备…

C++初学教程三

目录 一、运算符 一、自增自减运算符 二、位运算符 三、关系运算符 注意事项 四、条件运算符 注意事项 五、逻辑运算符 注意事项&#xff1a; 六、逗号运算符 概述 注意事项&#xff1a; 七、小结 运算符优先级和结合性一览表 一、运算符 一、自增自减运算符 运…

「Verilog学习笔记」根据状态转移写状态机-二段式

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 和三段式相比&#xff0c;就是将输出块和次态切换块合并。 timescale 1ns/1nsmodule fsm2(input wire clk ,input wire rst ,input wire data ,output reg flag );//****…