20240404这个数字有什么特点吗?

news2024/10/6 1:37:27

今天是2024年的清明节,20240404这个数字让我提出了一个疑问,它是否有什么含义或者特点呢?

首先,如果把它拆分为两个整数的平方和,会怎么样呢?

于是,我一顿操作猛如虎,搞出了这么个玩意:(基础版)

n = int(input())
found = False

for i in range(0, n + 1):
    for j in range(i, n + 1):
        if i ** 2 + j ** 2 == n:
            print(f'{i}^2 + {j}^2 = {n}')
            found = True    
    if found:
        break  # 找到符合条件的 i 和 j 后跳出外层循环

if not found:
    print("data error!")

刚输入几个100以内的数字,效果还不错,秒出答案,可是当输入大一点的数字时,似乎出了大毛病,它卡壳了,当输入20240404时,它一点点也不动了,哎

我扭头一想,现在这个算法的时间复杂度是O(n**2),怪不得速度这么慢,那么有没有什么好的办法呢?

既然是要找出符合以上条件的代码,何不转换一下思路呢!

要提高这个算法的效率,可以做一些优化。当前的算法是通过嵌套循环逐个计算 i 和 j 的平方和,并在找到符合条件的情况下输出。这种方法会导致算法的时间复杂度较高,因为它需要遍历很多不必要的情况。

一个提高效率的方法是利用数学性质来减少计算量。

根据题意,要找到满足 i^2 + j^2 = n 的 i 和 j,可以利用勾股定理的性质。具体来说,当 n 是一个整数时,如果存在整数 i 和 j,使得 i^2 + j^2 = n 成立,那么 n 一定可以表示为两个平方数的和。这个性质可以用来减少计算量。妙呀,这个想法真不错,适合我们!

于是根据以上思路,我们推出以下算法:(完善版)

​
def find_sum_of_squares(n):
    found = False

    # 尝试所有可能的平方数对
    for i in range(1, int(math.sqrt(n)) + 1):
        j = math.sqrt(n - i ** 2)
        if j.is_integer():
            print(f'{int(i)}^2 + {int(j)}^2 = {n}')
            found = True
        
    if not found:
        print("data error!")

n = int(input())
find_sum_of_squares(n)

​

一下子把时间复杂度降下来了,真不错。

我们测试一下吧:

貌似结果还不错,但是好像有重复的,怎么改呢?

ohoh,原来是没有跳出内层循环呢,原来如此,看我大展身手

以下就是改良版的终极代码了:(终极版)

import math

def find_sum_of_squares(n):
    found = False

    # 尝试所有可能的平方数对
    for i in range(1, int(math.sqrt(n)) + 1):
        j = math.sqrt(n - i ** 2)
        if j.is_integer():
            print(f'{int(i)}^2 + {int(j)}^2 = {n}')
            found = True
           break

    if not found:
        print("data error!")

n = int(input())
find_sum_of_squares(n)

妙不可言!

点赞加关注,下期更精彩!

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

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

相关文章

如何在Python中将HTML实体代码转换为文本

在处理HTML数据时&#xff0c;有时会遇到HTML实体代码&#xff0c;这些代码是为了在HTML中表示特殊字符而使用的。例如&#xff0c;<表示小于符号(<)&#xff0c;>表示大于符号(>)&#xff0c;&表示和符号(&)等等。那么当我们在实际操作中可能会遇到下面的…

并发编程BlockingQueue、BlockingDeque

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 BlockingQueue 也叫做阻塞队列,在某些情况下对BlockingQueue的访问可能会…

Kubernetes学习笔记7

使用kubeadm部署Kubernetes集群方法 使用kubernetes部署单节点Master节点K8s集群。 在实际生产环境中&#xff0c;是不允许单master节点的&#xff0c;如果单master节点不可用的话&#xff0c;当导致我们的K8s集群无法访问。 可以使用kubeadm将单master节点升级为多master节点…

【计算机毕业设计】企业员工信息管理系统——附系统源码

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…

[AIGC] Spring Interceptor 拦截器详解

文章目录 什么是Spring Interceptor如何使用Spring InterceptorSpring Interceptor的影响 什么是Spring Interceptor Interceptor&#xff08;拦截器&#xff09;是Spring MVC框架中的一种特性&#xff0c;类似于Servlet开发中的Filter&#xff08;过滤器&#xff09;&#xf…

007 CSS的继承和层叠 元素特性

文章目录 CSS属性的继承CSS属性的层叠选择器的权重 HTML元素的类型编写HTML注意事项元素隐藏方法CSS属性-overflowCSS样式不生效可能原因 CSS属性的继承 如果一个属性具备继承性&#xff0c;那么在该元素上设置后&#xff0c;它的后代元素都可以继承这个属性 如果后代元素自己…

UE4_如果快速做出毛玻璃效果_假景深

UE4_如果快速做出毛玻璃效果_假景深 2022-08-20 15:02 一个SpiralBlur-SceneTexture材质节点完成效果&#xff0c;启用半透明材质通过修改BlurAmount数值大小调整效果spiralBlur-SceneTexture custom节点&#xff0c;HLSL语言float3 CurColor 0;float2 BaseUV MaterialFloa…

浅谈智能照明控制系统的节能优势及其应用

【摘要】&#xff1a;通过智能照明控制系统与传统照明控制的对比&#xff0c;阐明智能照明控制系统的优势&#xff0c;基本组成、在智能建筑中的应用效果以及其实施存在的问题和前景展望。 【关键字】&#xff1a;智能照明控制&#xff1b;系统组成&#xff1b;优势&#xff1…

关于代码审查的一些思考

作为一名代码审查员&#xff0c;首先我们已经具备了丰富的代码开发经验&#xff0c;并且对提交的代码工程非常熟悉 代码审查可以发现并纠正代码中的错误、缺陷和不良实践。通过多人对代码进行仔细的检查和讨论&#xff0c;能够发现一些单独开发时难以察觉的问题&#xff0c;从…

力扣22. 括号生成

Problem: 22. 括号生成 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义回溯函数&#xff1a;void backtrack(int n, int leftUsed, int rightUsed, int k, string& path)&#xff1b;(每个参数的具体说明见下面代码) 1.1.结束条件&#xff1a;当k 2 * n时将path添…

SQLyog连接数据库8.0版本解析错误问题解决方案

问题描述&#xff1a; 解决方案&#xff1a; alter userrootlocalhostidentified with mysql_native_password by 密码; 再次连接就可以了。

zdpdjango_argonadmin Django后台管理系统中的常见功能开发

效果预览 首先&#xff0c;看一下这个项目最开始的样子&#xff1a; 左侧优化 将左侧优化为下面的样子&#xff1a; 代码位置&#xff1a; 代码如下&#xff1a; {% load i18n static admin_argon %}<aside class"sidenav bg-white navbar navbar-vertical na…

华为OD机试 - 全排列 - 回溯(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

【Python时序预测系列】基于ACO+LSTM实现单变量时间序列预测(源码)

这是我的第253篇原创文章。 一、引言 蚁群优化&#xff08;Ant Colony Optimization&#xff0c;ACO&#xff09;是一种启发式算法&#xff0c;受到蚂蚁寻找食物的行为启发而来。它可以用于优化问题&#xff0c;包括调整神经网络的超参数。长短期记忆网络&#xff08;LSTM&…

wheeltec轮趣ROS教育机器人的网络连接

一、术语解析 宿主机&#xff1a;宿主机是指物理主机&#xff0c;比如用于开发测试的笔记本电脑和台式机电脑。 虚拟机&#xff1a;虚拟机是指安装在宿主机的VMware&#xff0c;推荐在宿主机上安装虚拟机&#xff0c;官方提供虚拟机的镜像以及配套的开发环境。 ROS主机&…

HTML:表单

案例&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>报名表</title> </head> <body><form action"demo/welcome.php" method"post">名字&#xff1a;<inpu…

【Linux】进程初步理解

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 冯诺依曼体系结构1.1 认识冯诺依曼体系结构1.2 存储金字塔 2. 操作系统2.1 概念2.2 结构2.3 操作系统的管理 3. 进程3.1 进程描述3.2 Linux下的PCB 4. task_struct本身内部属性4.1 启动4.2 进程的创建方式4.2.1 父…

如何不编程用 ChatGPT 爬取网站数据?

敢于大胆设想&#xff0c;才能在 AI 时代提出好问题。 需求 很多小伙伴&#xff0c;都需要为研究获取数据。从网上爬取数据&#xff0c;是其中关键一环。以往&#xff0c;这都需要编程来实现。 可最近&#xff0c;一位星友在知识星球提问&#xff1a; 这里涉及到一些个人隐私&a…

秋招刷题4(动态规划)

1.购物单 import java.util.Scanner;public class Main {public static void main(String[] args){Scanner sc new Scanner(System.in);int N sc.nextInt();int m sc.nextInt();Goods[] goods new Goods[m];for(int i 0; i < m; i){goods[i] new Goods();}for(int i …