fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int dv[22004];
  4. int isprime(long n){
  5. if(dv[n]==0){
  6. return 1;
  7. }
  8. return 0;
  9. }
  10. int main(){
  11. long j=0,i=0,p2=0,p1=0;
  12. long n=0,p3=0;
  13. for(i=2;i<=22002;i++){
  14. for(j=2*i;j<=22002;j+=i){
  15. dv[j]=1;
  16. }
  17. }
  18. scanf("%ld",&n);
  19. while(n){
  20. p2=0;
  21. for(i=100;i>=2;i--){
  22. if(((p3=i*i*i)<n)&& isprime(i)){
  23. for(j=2;j<=101;j++){
  24. p1=n-p3-j*j;
  25. if(p1<2){
  26. break;
  27. }
  28. if(isprime(j)&&isprime(p1)){
  29. printf("%ld %ld %ld\n",p1,j,i);
  30. p2=1;
  31. break;
  32. }
  33. }
  34.  
  35. }
  36. if(p2)
  37. break;
  38. }
  39. if(!p2)
  40. printf("0 0 0\n");
  41. scanf("%ld",&n);
  42. }
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 0s 2940KB
stdin
81
85
155
0
stdout
29 5 3
73 2 2
5 5 5