|
发表于 2020-11-17 13:48:38
|
显示全部楼层
本帖最后由 jackz007 于 2020-11-17 13:53 编辑
那就稍微复杂一点
- #include <stdio.h>
- int decom(long long * x , long long * y , long long n)
- {
- int r ;
- long long i , j , k ;
- for(r = 0 , i = 2 ; i * i < n + 1 ; i ++) {
- if(i < n && ! (n % i)) {
- * x = i ;
- * y = n / i ;
- r = 1 ;
- break ;
- }
- }
- return r ;
- }
- main(void)
- {
- long long a = 600851475143 , b , c , i , j ;
- printf("%I64u = " , a) ;
- for(b = a , c = 0 ; decom(& i , & j , b) ; b = j , c ++) {
- if(c) printf(" * ") ;
- printf("%I64d" , i) ;
- }
- printf(" * %I64d\n" , b) ;
- printf("the anwser is : %d\n" , b) ;
- }
复制代码
编译、运行实况:
- D:\0002.Exercise\C>g++ -o x x.c
- D:\0002.Exercise\C>x
- 600851475143 = 71 * 839 * 1471 * 6857
- the anwser is : 6857
- D:\0002.Exercise\C>
复制代码 |
|