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这样的用法,感谢乐于分享知识的网友。
还有,算法对于我这样脑袋不灵光的孩子来说,太重要了。努力积累吧!