一切问题都是有来源的,所以我直接先上一波题:

正常的从2~n循环,在这里我暂且不谈,直接直入主题(优化 优化)!

接下来我将以代码——>简单分析——>重点谈我遇到的问题,感谢大家的阅读!

#include<stdio.h>
#include<math.h>
int main()
{int n,i,tmp,q;int j = 0;int a[10000] = { 0 };scanf("%d", &n);tmp = n;printf("%d=", n);for (i = 2; i <= sqrt(n)+1; i++)//------->1{if (n % i == 0){a[j++] = i;n /= i;i--;//------>2}if (i >= sqrt(n))//--------->3{a[j++] = n;}}for (i = 0; i < j; i++){if (i < j - 1)//------->4printf("%d*", a[i]);elseprintf("%d", a[i]);}return 0;

注:文章中出现的1~4指 上述代码(数字标号)的位置。

1.sqrt(n)可以很好的优化代码运行速度,如果在sqrt(n)之前(可能)存在该数的质因数;在sqrt(n)后面一定不存在该数的质因数(举个例子 4 = 2*2  ;8 = 2*2*2 ;15 = 3 *5),如果不太理解的话建议百度一下(百度一下 你就知道 狗头保命)。i = sqrt(n)+1,这个+1我最后会重点分析。

2.i--,在这里目的是再进行一次原i的判断(举个例子 8 = 2*2*2)。

3.相当于在一次优化,相当于每次成功处理后,下一次的处理次数(循环)在减少。

4.因为每一次进到if里面都是a[j++],所以到最后一次时j要比我存入的次数大1,在打印的时候-1就OK了。

i = sqrt (n)+1,为什么要加个1?(这也是我一开始发现测试结果不对 进而调试后加上的)

我以一组数据为例,向大家解释一下:

如果没有+1代码运行结果如下:

这就有疑问了,我的19去哪里了?(被吃了吗?)我解释一下:

当代码处理到18468 = 2*2*3*3*3*3*3的时候,我的n=19,sqrt(n)= 4.358899(因为是double类型的),当i=4的时候没有进去,i++=5又跳出for循环,所以导致我最后一个if就有可能进不去(与想象中执行的不一样)。所以在sqrt(n)后面+1,就可以很好的解决这个问题。

在最后,再次感谢老铁们的阅读!

欢迎老铁们来点赞与评论 同时也希望老铁们可以指点与纠错,谢谢大家了!

分解质因数(优中再优化)相关推荐

  1. 信奥中的数学基础:分解质因数

    五分钟掌握一个小学数学知识点--分解质因数(苏教版五年级下册) 五分钟掌握一个小学数学知识点--分解质因数(苏教版五年级下册)_哔哩哔哩_bilibili [算法竞赛中的数学]素数筛选与质因数分解 [ ...

  2. c语言分解质因数的设计思路,C语言开发中分解质因数的操作实例

    C语言的开发在日常开发中被广泛使用,而我们都知道C语言是简单的编译方法,爱站技术频道小编今天就为大家带来了C语言开发中分解质因数的操作实例,一起去进入下文看看吧! 首先来看一个最简单的C语言实现质因数 ...

  3. Unity教程之再谈Unity中的优化技术

    这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体 这一步主要是为了针对性能瓶颈中的" ...

  4. 在python中如何分解质因数

    在python中如何分解质因数 解决此题时,首先先了解一下分解质因数的含义:分解质因数也称分解素因数,其只针对合数,所以在进行质因数分解前,先判断其是否为合数,如果不是则直接输出,如果输入的数为合数, ...

  5. 深度学习中的优化简介

    深度学习算法在许多情况下都涉及到优化. 1. 学习和纯优化有什么不同 在大多数机器学习问题中,我们关注某些性能度量P,其定义于测试集上并且可能是不可解的.因此,我们只是间接地优化P.我们系统通过降低代 ...

  6. 【数学专题】 筛质数、分解质因数和快速幂

    筛质数 质数筛法分为埃氏筛和线性筛. 埃氏筛没有线性筛时间复杂度好,不常用,但是他的时间复杂度分析方法却比较常用. 埃氏筛的时间复杂度为O(nloglogn)≈O(n)O(nloglogn)≈O(n) ...

  7. 算法刷题-数论-质数的判定、分解质因数、筛质数

    文章目录 数论 1. 质数 质数的判定---试除法 分解质因数---试除法 筛质数 朴素筛法 埃氏筛法 线性筛法 数论 1. 质数 质数:在大于1的整数中,如果只包含1和它本身这两个约数,那么这个数就 ...

  8. 弱网络环境下最优调度和优化传输层协议方案

    一.背景 与有线网络通信相比,无线网络通信受环境影响比较大(例如高层建筑.用户移动.环境噪音.相对封闭环境等等),网络的服务质量相对来说不是非常稳定,导致用户经常会在弱信号的网络环境下通信.而当用户在 ...

  9. 数据科学和机器学习中的优化理论与算法(下)

    数据科学和机器学习中的优化理论与算法(下) 数据科学和机器学习当前越来越热,其中涉及的优化知识颇多.很多人在做机器学习或者数据科学时,对其中和优化相关的数学基础,包括随机梯度下降.ADMM.KKT 条 ...

最新文章

  1. NFS共享服务挂载时出现“access denied by server while mounting”的解决方法
  2. js_高级_面向对象编程案例---理解面向对象编程思想很重要
  3. 最新鲜最详细的Android SDK下载安装及配置教程
  4. 字符串中最长无重复子串(O(n))
  5. C# 事件(第四章)
  6. 电脑连接virtualbox虚拟机的方法
  7. WIN10卡顿,system进程硬盘占用100%,iaStorA警告事件,发出了对设备 \Device\RaidPort0 的重置。
  8. ps蒙版怎么用:你会用ps蒙版吗?【萧蕊冰】
  9. 如何在阿里云服务器部署程序并用域名直接访问
  10. 计算机可移动磁盘无法显示图片,电脑不显示移动硬盘图标?两种解决办法
  11. Android系统固件包解包、修改(涉及root提权)、打包
  12. Vue3报错:Extraneous non-props attributes (style) were passed to component but could not be automatical
  13. 女生转行软件测试难吗?
  14. aspen压缩因子_Aspen 物性代号及常用的英语单词中英文对照
  15. spreadtrum展信平台加密Secure boot流程
  16. 你不曾见过的酷炫地图可视化作品(二)
  17. 基于uni-app开发的一款视频播放器插件
  18. 【直通BAT】BAT后端开发36题:Redis、Nosql、Mysql、秒杀题目!含面试经验总结!(优知学院公众号)
  19. 阿里云ACP大数据分析师 | 笔记纪要
  20. 基于RT-THREAD的桌面小工具

热门文章

  1. ES6 - 基础学习(22): async 函数
  2. C#LeetCode刷题-双指针
  3. node.js api接口_如何在Node.js API客户端中正常处理故障
  4. python中list怎么用_python中list(列表)的使用方法总结(图文)
  5. pygame做的著名游戏_用Python和Pygame写游戏-从入门到放弃(1)
  6. 搭建简易留言板过程中遇到的问题
  7. SQL相关子查询与非相关子查询
  8. Stateflow中的事件执行顺序
  9. 100行Python代码实现一款高精度免费OCR工具
  10. 大数据技术周报第 004 期