本帖最后由 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>
|