一,概述

如果要提高软件的性能,需要从下面几个方面入手:

1、算法与数据结构

2、算法调优

3、数据结构重组

4、与系统无关的代码的调优(float取代double)。

5、与系统相关的调优,把经常使用的函数进行加速,比如关键代码使用汇编代替高级语言

6、硬件上使用浮点加速器。

二,习题

2)因子分解

例题:大于1的正整数n可以分解为:n = x1*x2*...*xm。
                例如:当n = 12时,共有8中不同的分解式:
12 = 12;
12 = 6 * 2;
12 = 4 * 3;
12 = 3 * 4;
12 = 3 * 2 * 2;
12 = 2 * 6;
12 = 2 * 3 * 2;
12 = 2 * 2 * 3;

编程任务:
对于给定的正整数 n, 编程计算n共有多少种不同的分解式。
Input
有多组输入数据,每组数据的一行,为一个正整数n( 1 < = n < = 2000000000 )。
Output
输入计算出的分解式的数目。每组数据后输出一个回车。
Sample Input
12
Sample Output
8

测试可以输出每个等式的程序(12 = 12需要手动输出,程序没给出)#include <stdio.h> int fun(int a,int* aaa,int last=0); bool Decompose(int a); int fun(int a,int* aaa,int last) { for(int i=a-1;i>1;i--) { int num=last;//记录 if(a % i == 0) { if(last != 0) //如果进入这个方法,说明因子待分解 { int temp=a; for(int j=0;j<last;j++) temp*=aaa[j]; printf("%d=",temp); for(int j=0;j<last;j++) printf("%d*",aaa[j]); } else printf("%d=",a); aaa[num++]=i; printf("%d*%d\n",i,a/i); if(Decompose(a/i)) { fun(a/i,aaa,num); //递归调用 } } } return 0; } bool Decompose(int a)//测试还能不能分解 { for(int i=a-1;i>1;i--) { if(a % i == 0) { return true; } } return false; } int main() { int num=12; int numlist[12]; fun(num,numlist); return 0; }

仅仅返回个数的程序(递归调用)

#include<stdio.h> int count; int num; void derive(int a) //采用递归方法得到所要的数值 { int i; for(i=a-1;i>1;i--) if((a % i)==0) { count++; derive(a/i); } } int main() { while(1) { printf("\nplease input a number:"); scanf("%d",&num); if(num==0) break; count=1; derive(num); printf("\nthere are %d comforted",count); } return 0; }

6)效率永远排在正确性后面?

一个大型程序,今天有10个已知的错误,下个月又会有10个新的错误。如果让你在更改当前10个错误和使程序提速10倍,你会选择哪一个?

转载于:https://www.cnblogs.com/JPAORM/archive/2012/05/14/2509996.html

【编程珠玑】第六章 程序性能分析相关推荐

  1. 编程珠玑第六章习题二——C++实现一个数的因子分解

    引申为一道题目: 将大于1的自然数N进行因式分解,满足N=a1*a2*a3-am 编一程序,对任意的自然数N, 求N的所有形式不同的因式分解方案总数. 如N=12,共有8种分解方案,它们分别是: 12 ...

  2. Java7并发编程指南——第六章:并发集合

    Java7并发编程指南--第六章:并发集合 @(并发和IO流) Java7并发编程指南第六章并发集合 思维导图 项目代码 思维导图 项目代码 GitHub:Java7ConcurrencyCookbo ...

  3. 【编程珠玑】陪着奶猫看看书--《编程珠玑》第一章

    陪着奶猫看看书–<编程珠玑>第一章 首先说说小奶猫我为什么要读<编程珠玑>这本神作,当年小奶猫刚刚进入大学时候是个纯洁的少年,啥都不懂,要是哪个女生下午在外面问我带身份证没有, ...

  4. 编程珠玑之第二章习题5

    问题描述: n元一维向量旋转问题数将向量ab变为ba.如何将向量abc变为cba? (这对交换非相邻内存块问题进行了建模) 问题解析: 1.这里需要用到一个重要的性质:CBA=(ArBrCr)r    ...

  5. 编程珠玑第12章习题

    内容来自互联网,做了一些修改 参考: http://blog.csdn.net/tianshuai1111/article/details/7583297 http://blog.csdn.net/t ...

  6. Windows Shell编程-第十六章.命名空间扩展

    第十六章 命名空间扩展 探测器使用层次结构表述形成系统的许多对象--文件,文件夹,打印机,网络对象等等.这些对象组合定义了一个命名空间,这是一个封闭的符号或名字集合,其中任何给定的符号或名字都能成功地 ...

  7. python核心编程:第六章。

    第六章:序列,字符串,列表和元组 列表,序列,元组. in 和not in 判断元素是否属于一个序列,或者判断一个字符是否在一个字符串内,返回一个布尔值. obj[not] in sequence 序 ...

  8. 程序员编程艺术 第六章 求解500万以内的亲和数

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 第六章. ...

  9. Java基础编程\第四-六章(面向对象编程)

    Java面向对象学习的三条主线: (第4-6章) 文章目录 面向对象的举例 属性(成员变量)和局部变量 类中方法的声明和使用 Train(圆面积) ==Train(对象数组)== ==对象数组的内存解 ...

最新文章

  1. Spring Boot 2.x基础教程:使用Redis的发布订阅功能
  2. 星巴克是如何处理订单的?
  3. 在Cloudfoundry上部署RESTful服务
  4. 第一百二十六节,JavaScript,XPath操作xml节点
  5. sublime用cmd窗口调试python_如何使用xdebug和sublime调试python脚本
  6. 不连续字符的串计数(洛谷P4439题题解,Java语言描述)
  7. 讲解Java中的String几种类型
  8. REST API 概念的简单介绍
  9. Linux之HugePages快速配置
  10. 一文读懂数据平台、大数据平台、数据中台
  11. 七周成为数据分析师(秦路)-第一周-数据分析思维
  12. mysql取消安全模式
  13. bert tensorflow2 serving部署
  14. 对路径“c:\inetpub\wwwroot\yuanxiaofenlei.html”的访问被拒绝。
  15. capture h5中_input type=file属性详解,利用capture调用手机摄像头
  16. Linux 安装字体库-宋体
  17. brew install gpg
  18. 移动调试工具weinre安装和使用
  19. java 语言的简介
  20. 带你了解什么是MySQL数据库(六)索引原理,如何建立与使用索引

热门文章

  1. 给mac配置adb 路径
  2. Mac OS X搭建C#开发环境
  3. vim python补全_转:VIM python 自动补全插件:pydiction
  4. IT如何跨越与业务间的那道“鸿沟”?
  5. java dom4j 读取 xml_java使用dom4j读取xml示例
  6. 智能照明c语言程序,基于单片机的智能照明控制系统设计方案(含AD+源代码)...
  7. php 内部 邮件,php电子邮件形式内部服务器错误
  8. java ee笔试题_【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(六)
  9. python计算商品总价_python根据京东商品url获取产品价格
  10. 让电脑代码满屏飞_程序员想让你的电脑死机,需要多久?