数学王国找寻另一半:求一个整数的真因子总和

news2024/11/17 3:33:11

数学王国找寻另一半,求一个整数的真因子总和。


  (本笔记适合python字符串、列表list熟悉的 coder 翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


数学王国找寻另一半
热心肠小南
(求一个整数的真因子总和)


本文质量分:

96
本文地址: https://blog.csdn.net/m0_57158496/article/details/133635207

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 热心肠小南
    • 1、题目描述
    • 2、算法解析
      • 2.1 常规全循环遍历算法
      • 2.2 开方遍历到整数平方根优化算法
    • 3、完整源码



◆ 热心肠小南


1、题目描述


  • 题目描述截屏图片
    在这里插入图片描述

题目来源于 CSDN 问答社区提问“数学王国找寻另一半”



回页目录


2、算法解析


  代码的优化,不足以解决超时问题。经过仔细推敲,找到了可以大大减少遍历次数的途径从2起,每次遍历到能整除的数,就累加对应的两个因数;如果该整数是某整数数的平方,该某整数即是所有因子的中值(中间值),前面是成对累加的因子,遍历到此就找完了整数的因子;值得注意的是,1总是整数数的真因子,没有在遍历中累加,另如果整数有整数平方根,循环遍历多加了一个相同的因子(平方根)所以,在优化算法代码中,return返回语句用了三元操作,分情况返回最后结果,在“特殊”情况(整数n有整数平方根根时)下要减去中值。


  • 题目样例试炼
    在这里插入图片描述

2.1 常规全循环遍历算法


  • 代码运行效果截屏图片
    在这里插入图片描述

  常规解析式算法,亦可以写成常规for循环的样子。循环写法,效率比解析式略低,但判别很小,几乎可以忽略。但解析式写法简洁。

代码


def sum_factor(n): # 常规解析式算法,亦可以写成常规for循环的样子。
    return sum([i for i in range(1, n) if not n%i])



回页目录


2.2 开方遍历到整数平方根优化算法


  • 代码运行效果截屏图片
    在这里插入图片描述

代码


def sum_factor(n): # 优化开方遍历到平方根算法。
    result = 0
    m = int(sqrt(n))
    
    for i in range(2, m+1):
        
        if not n%i:
            print(i, n//i) # 程序调试用语句。
            result += i + n//i

    return result + 1 if sqrt(n)%1 else result + 1 - m



回页目录


3、完整源码

(源码较长,点此跳过源码)

#!/sur/bin/nve python
# coding: utf-8
from time import time
from math import sqrt

def sum_factor(n): # 常规解析式算法,亦可以写成常规for循环的样子。
    return sum([i for i in range(1, n) if not n%i])


def sum_factor(n): # 优化开方遍历到平方根算法。
    result = 0
    m = int(sqrt(n))
    
    for i in range(2, m+1):
        
        if not n%i:
            print(i, n//i) 
            result += i + n//i

    return result + 1 if sqrt(n)%1 else result + 1 - m


def main(t, *nums): # 计算多个整数n的主程序。
    
    for i in nums:
        print(sum_factor(i))


if __name__ == '__main__':
    n = input('\n输入:\n').strip()

    if not n:
        s ='''3
2
10
20'''
        print(s)
        n = s[0]
    else:
        s = ''
        for i in range(int(n)):
            s += '\n' + input().strip()
    print('\n输出:')
    start = time()
    main(int(n), *map(int, s.split('\n')[1:]))
    print(f"\n程序用时:{time()-start}s\n")



回页首


上一篇:  “我写过的最蠢的代码是?”活动征文(“我写过的最蠢的代码是?”活动征文。老实说,我觉得没写过最蠢的代码!只是幼稚得可爱)
下一篇: 

我的HOT博:

  本次共计收集 241 篇博文笔记信息,总阅读量 40.66w,平均阅读量 1687。已生成 16 篇阅读量不小于 4000 的博文笔记索引链接。数据采集于 2023-10-05 22:53:15 完成,用时 4 分 12.96 秒。


  1. ChatGPT国内镜像站初体验:聊天、Python代码生成等
    ( 59106 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/129035387
    点赞:125   踩 :0  收藏:796  打赏:0  评论:71
    本篇博文笔记于 2023-02-14 23:46:33 首发,最晚于 2023-07-03 05:50:55 修改。
  2. 让QQ群昵称色变的神奇代码
    ( 58033 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:24   踩 :0  收藏:83  打赏:0  评论:17
    本篇博文笔记于 2022-01-18 19:15:08 首发,最晚于 2022-01-20 07:56:47 修改。
  3. pandas 数据类型之 DataFrame
    ( 9148 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:6   踩 :0  收藏:31  打赏:0  评论:0
    本篇博文笔记于 2022-05-01 13:20:17 首发,最晚于 2022-05-08 08:46:13 修改。
  4. 个人信息提取(字符串)
    ( 7186 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:1   踩 :0  收藏:13  打赏:0  评论:0
    本篇博文笔记于 2022-04-18 11:07:12 首发,最晚于 2022-04-20 13:17:54 修改。
  5. 罗马数字转换器|罗马数字生成器
    ( 7021 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    点赞:0   踩 :0  收藏:1  打赏:0  评论:0
    本篇博文笔记于 2022-01-19 23:26:42 首发,最晚于 2022-01-21 18:37:46 修改。
  6. Python字符串居中显示
    ( 6915 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    点赞:1   踩 :0  收藏:7  打赏:0  评论:1
    本篇博文笔记
  7. Python列表(list)反序(降序)的7种实现方式
    ( 6902 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:5   踩 :0  收藏:20  打赏:0  评论:8
    本篇博文笔记于 2022-12-11 23:54:15 首发,最晚于 2023-03-20 18:13:55 修改。
  8. 斐波那契数列的递归实现和for实现
    ( 5517 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122355295
    点赞:4   踩 :0  收藏:2  打赏:0  评论:8
    本篇博文笔记
  9. 练习:字符串统计(坑:f‘string‘报错)
    ( 5094 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121723096
    点赞:0   踩 :0  收藏:1  打赏:0  评论:0
    本篇博文笔记于 2021-12-04 22:54:29 发布。
  10. python清屏
    ( 5071 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    点赞:0   踩 :0  收藏:8  打赏:0  评论:0
    本篇博文笔记
  11. 回车符、换行符和回车换行符
    ( 5068 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:1   踩 :0  收藏:2  打赏:0  评论:0
    本篇博文笔记于 2022-02-24 13:10:02 首发,最晚于 2022-02-25 20:07:40 修改。
  12. 练习:尼姆游戏(聪明版/傻瓜式•人机对战)
    ( 4932 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121645399
    点赞:14   踩 :0  收藏:42  打赏:0  评论:0
    本篇博文笔记
  13. 密码强度检测器
    ( 4306 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121739694
    点赞:1   踩 :0  收藏:4  打赏:0  评论:0
    本篇博文笔记于 2021-12-06 09:08:25 首发,最晚于 2022-11-27 09:39:39 修改。
  14. 练习:生成100个随机正整数
    ( 4255 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122558220
    点赞:1   踩 :0  收藏:6  打赏:0  评论:0
    本篇博文笔记于 2022-01-18 13:31:36 首发,最晚于 2022-01-20 07:58:12 修改。
  15. 罗马数字转换器(用罗马数字构造元素的值取模实现)
    ( 4143 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122608526
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2022-01-20 19:38:12 首发,最晚于 2022-01-21 18:32:02 修改。
  16. 我的 Python.color() (Python 色彩打印控制)
    ( 4128 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123194259
    点赞:2   踩 :0  收藏:8  打赏:0  评论:0
    本篇博文笔记于 2022-02-28 22:46:21 首发,最晚于 2022-03-03 10:30:03 修改。
推荐条件 阅读量突破三千
(更多热博,请点击蓝色文字跳转翻阅)

回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


回页首

◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

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

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

相关文章

基于水循环优化的BP神经网络(分类应用) - 附代码

基于水循环优化的BP神经网络(分类应用) - 附代码 文章目录 基于水循环优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.水循环优化BP神经网络3.1 BP神经网络参数设置3.2 水循环算法应用 4.测试结果&#x…

10月7日星期六今日早报简报微语报早读

10月7日,星期六,早报简报微语早读分享。 1、中秋国庆假期国内旅游8.26亿人次,旅游收入7534.3亿; 2、2023国庆档新片票房破27亿; 3、石宇奇、李诗沣会师决赛,国羽提前包揽男单金银牌; 4、德国大…

前端vue 自定义组件

Vue组件的使用之props 为了提高组件的复用性,在封装vue组件时需要遵守如下原则: ① 组件的DOM结构、Style样式要尽量复用 ② 组件中要显示的数据,尽量由组件的使用者提供 为了方便使用者为组件提供要展示的数据,vue组件提供了…

【C++面向对象侯捷下】4. pointer-like classes,关于智能指针 | 5. function-like classes,所谓仿函数

文章目录 4. pointer-like classes,关于智能指针pointer-like classes,关于智能指针 shared_ptrpointer-like classes,关于迭代器5. function-like classes,所谓仿函数【不懂,跳过】 4. pointer-like classes,关于智能指针 pointer-like classes,关于智…

Postgresql中的C/C++混编(JIT)

1 Postgresql编译JIT 整体上看使用了GCC、G编译文件,最后用G汇总: GCC编译的三个.o文件llvmjit、llvmjit_deform、llvmjit_expr llvmjit.c -> llvmjit.o gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -…

VF11MR8M 冲销原因 小结

VF11&MR8M 冲销原因 小结 1.后台设置路径: SPRO->财务会计->总账会计->业务交易->调整过账/冲销->定义冲销原因 反记账: 2.前台操作使用01–当前期间回转 不会反记账,冲销凭证 过账日期 按 原凭证过账日期&#xff0…

CCF CSP认证 历年题目自练Day23

CCF CSP认证 历年题目自练Day23 题目一 试题编号: 202006-1 试题名称: 线性分类器 时间限制: 1.0s 内存限制: 512.0MB 题目分析(个人理解) 题目很长,专门吓唬人的,第一行输入…

安卓‘进度条ProgressBar’中‘setIndeterminate()’方法

在进度条的设置中,setIndeterminate()方法是用来设置进度条是否采用‘模糊模式’(Indeterminate的意思就是‘不确定的,模糊的,不明确的’ 也就是进度是否是确定的) 当设置setIndeterminate(true)参数为真时&#xff0c…

Compose中的Text组件

纵向布局为:Column 横向布局为:Row 设置内容 text属性设置内容。 设置权重 Modifier.weight(1.0f, true)权重设置,第一个参数 Float类型设置占比权重,第二个参数当为true时,元素将占据分配的整个宽度。 fontSize…

李沐深度学习记录3:11模型选择、欠拟合和过拟合

通过多项式拟合探索欠拟合与过拟合 import math import numpy as np import torch from torch import nn from d2l import torch as d2l#生成数据集 max_degree 20 # 多项式的最大阶数 n_train, n_test 100, 100 # 训练和测试数据集大小 true_w np.zeros(max_degree) # …

VMware 17pro安装流程附带密钥手把手教

VMware 17pro centos-8.5.2111-isos-x86_64安装包下载_开源镜像站-阿里云 安装VMware 17pro 下一步 勾选我接营许可协议中的条款点击下一步 更改路径后点击下一步 注意两个都要取消勾选不然会自动更新 下一步即可 最后一步为安装就行(我电脑上有VMware 16pro所以我的…

3.绘制一个点(鼠标点击)

愿你出走半生,归来仍是少年! 通过鼠标点击交互,实现在gl中绘制点。 1.知识点 1.1.点击坐标转换为Gl坐标 通过canvas的点击事件将会获得鼠标在浏览器客户区中的坐标。通过移除canvas自身位置后可获取鼠标在canvas中的点击位置。同时通过canvas的长宽将坐…

Mini-dashboard 和meilisearch配合使用

下载的meilisearch一般是development模式,内置客户端,修改客户端后需要重要全部编译,花时间太长了。前后端分离才是正道,客户端修改不用重新编译后端。 方法如下: 1、修改配置文件/etc/meilisearch.toml,…

磁盘io使用率高问题排查

Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。 1.小文件读写的磁盘性能瓶颈是寻址(随机读写性能更差)评估标准:TPS 2.大文件读写的磁盘性能瓶颈…

cereal:支持C++11的开源序列化库

cereal:支持C11的开源序列化库 文章目录 一:引言二、cereal简介三、cereal的下载和使用 一:引言 序列化 (Serialization) 程序员在编写应用程序的时候往往需要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另…

认识计算机主板

目录 定义主要部件简单图示 主要功能 定义 计算机主板(Motherboard)是计算机系统中的核心组件之一,也被称为系统板、主板或母板。它是一个电子电路板,用于连接和支持计算机的各种硬件组件,包括中央处理器(…

零售业:别让数据安全成为业务的绊脚石!(附文件下载)

零售业上榜! 截至2023年8月31日,南都大数据研究院通过各地行政执法公示平台、媒体报道等公开渠道,收集到146起依据《数据安全法》作出行政处罚决定的案例。梳理发现,零售业以10.27%的占比位居行业第三,成为数据安全行…

尚硅谷Nginx教程由浅入深--笔记

尚硅谷Nginx教程由浅入深--笔记 Nginx简介Nginx相关概念反向代理负载均衡动静分离 Nginx安装Nginx命令Nginx配置Nginx配置实例反向代理1反向代理2负载均衡动静分离 Nginx简介 Nginx是一个高性能的HTTP和反向代理服务器,特点是内存占用少,并发能力强。 …

高铁站高速稳定用网秘籍,赶紧收藏

中秋国庆黄金周将至,销售旺季即将来临。车来车往、人潮涌动,稳定可靠的网络连接,成为了各大小商户抢占市场、掌握流量密码的关键。 在湖南省郴州市,某食品连锁商店负责人正在为店铺网络问题发愁。该连锁店部分销售网点位于繁忙的高…

Pikachu靶场——暴力破解

文章目录 1. 暴力破解1.1 基于表单的暴力破解1.2 验证码绕过(on server)1.3 验证码绕过(on client)1.4 token防爆破?1.5 漏洞防御 1. 暴力破解 暴力破解漏洞是指攻击者通过尝试各种组合的用户名和密码,以暴力方式进入系统或应用程序的方法。它利用了系统或应用程序…