| 
 | 
 
 
发表于 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>
 
  复制代码 |   
 
 
 
 |