欧拉计划003

003.13195的质数因子有5,7,13和29.

600851475143的最大质数因子是多少?

————————————————————————————————————————

求正整数的质数因子在一些c经典100例中见过,便套用了这样的解题思路:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

代码如下:

 

#include <stdio.h>
#include <stdlib.h>


int main (void)
{
    _int64 a=600851475143;
    int i;
    
    for(i=2;i<=a;i++)
    {
        while(a!=i)
            if(!(a%i))  
            {
                printf("%d\t",i);
                a=a/i;
            }
            else break;
    }
    printf("%d\n",a);
    
    printf("max=%d\n",a);
    return 0;
}

 

输出结果:

              

     在编程中,发现给的数值超过了一般int、long等整数型的数值范围,然后谷歌了篇博文(来自http://www.byvoid.com/blog/c-int64)发现_int64这样的用法,感谢乐于分享知识的网友。

    还有,算法对于我这样脑袋不灵光的孩子来说,太重要了。努力积累吧!

 

posted @ 2013-03-16 22:50  要我安静从容  阅读(130)  评论(0编辑  收藏  举报