数因子拆分法

来源:互联网 发布:mac 触摸板 鼠标方向 编辑:程序博客网 时间:2024/04/30 15:24

数因子拆分法

       在学习 C/C++ 的过程中,经常要解决一些有趣的数学问题。在这里我献上两种求解整数因子的方法。

一、直接穷举法

    在使用穷举法的时候,我们可以直接从 1 开始,依次加 1 来进行余数与零的比较。代码如下:

int num;printf("Please input an integer:");scanf("%d", &num);for(int i = 1; i <= num; i++){    if(0 == num % i)   {        printf("%d\n", i);   }}
    这个算法的优点是,我们一眼就看出它是在干什么,可读性强!

    但是,这个算法的一个非常明显的特点是就是——效率太低。如果是一个比较小的数,这个算法所用的时间不是太明显;但是如果是一个较大的数,那这时间就非常可观了!

所以,我们有必要找一种更用效率的方法!

二、区间缩进法

    其实在第一种方法里,我们使用了一端区间缩进法,就是从左区间开始缩进,推到右区间!很自然,我们会想到一种更好的方法,那就是两端区间缩进法!从左右区间同时开始缩进!算法的实现代码如下:

int num;printf("Please input an integer: ");scanf("%d", &num);int i = 0, j = 0;for(i = 1, j = num / i; i <= j; i++, j = num / i){    if(0 == num % i)    {        printf("%d %d", i, j);    }}
    这个算法的优点很明显,速度快!但是,代价是一些人在一开始看的时候不是很明白,牺牲的可读性!

0 0
原创粉丝点击